Spring Boot的配置文件

Spring Boot中的配置文件有两种:properties格式和yml格式

一、propertise格式

  1. propertise格式是Springboot默认的配置文件的格式,它才有键值对key=value的方式存储配置信息,有系统key值和自定义key值两类。
  • 系统key值就是Spring boot约定的一些key值,通过设置这些key对应的value值可以配置对应功能。比如:
    servlet.port=8090
    这条键值对就是设置servlet的端口号的。
  • 自定义的key值就是可以自己设计一些key=value的键值对写在配置文件中,不用声明直接写就行。比如:
    student.id=10
    student.name=zhangsan
    这两个就是我自定义的键值对,也可以写在配置文件中。
    在这里插入图片描述
  1. 默认情况下的properties是不支持中文的,因为他的字符集不是utf8,所以在注释中写中文时,会出错。
    在这里插入图片描述
    需要再idea的设置里面,搜索encoding
    将下方的两个设置项都改成utf8.
    在这里插入图片描述

二、yaml格式

也可以简写成yml,全称是yet another mark language,另一种标记语言。

  1. 为什么有了propertise格式还要有yml格式?

propertise和yaml的关系就是新老版本之间的关系,propertise是java标准库规定的配置文件,而yaml是一个跨语言的,多平台可用的配置文件。
因为在实际工程中,通常一个项目不是由一个团队做的,而是多个团队共同开发,一个团队负责一个模块的开发,各个团队使用的语言配置文件格式都不一样,spring boot就是properties,最终一个项目可能有很多类型的配置文件,这对最终使用配置的运维团队是不友好的,所以就出现了yml配置文件。
yaml的跨语言特性,大大的减轻了项目的最终使用者的配置难度。

  1. yaml的语法格式
    yaml采用了一种类似于json的语法key: value.不同的是yaml的语法要求更加严格。
    • key:后面必须加一个空格才能接着写value。key: value,不能是key:value。

    • yaml的层级次序是通过行头的tab个数多少形成的。比如在propertise中:

      spring.datasource.username=root
      

      在yaml中:

      spring:datasource:username: root
      
  2. 在yaml里面表示字符串
    有三种方法,单引号,双引号和不加引号,都能表示字符串。
    但是只有双引号括起来的字符串中如果有转义字符的话最终结果是转义后的字符,单引号和不加引号都是所见即所得,写啥就是啥。
    在这里插入图片描述

三、获取配置文件中的属性和对象

  1. @Value注解(获取配置文件中的属性)
    在配置文件中写的键值对也是可以再项目代码中获取到的。
    • @Value注解就是通过选择key值从而获取key值对应的value值的注解。

      @Value("${student.name}")
      private String name;
      

      注意:必须要将配置项的key值放在${}中才能获取到对应的value值,如果不加 ${},如下:

      @Value("student.name")
      private String name;
      

      下方的name属性就只会获取到被传的这个“student.name”这个字符串。

  2. @ConfigurationPropertise(获取配置文件中的对象)
    • 比如在配置文件中自定义了一个对象
      propertise格式:
      在这里插入图片描述
      yaml格式:
      在这里插入图片描述
      都可以看做是一个对象,内部有一个name和age两个属性。可以从配置文件中直接获取到这个对象。
    1. 要定义一个此对象的接受类。
      • 类属性名和对象属性名对应。
      • 将这个类添加到Spring容器中,作为Bean。
      • 使用@ConfigurationPropertise注解,指定配置文件中的对象名。
      • 要实现这个类的getter和setter函数
        在这里插入图片描述
    2. 获取到这个配置文件中的对象
      使用@Autowired注入,和获取普通的Bean对象一样。
      在这里插入图片描述

四、Propertise VS yaml

  • Propertise以key=value的形式配置文件,yaml以key:value的形式配置文件,层级之间使用换行缩进的方式配置,并且:后面必须加上空格才能写value。
  • Propertise是早期的默认的配置文件,但是配置存在一些冗余配置,使用yaml可以解决冗余问题。
  • yaml支持更多的语言,通用性更好。
  • yaml支持更多的数据类型。

五、常用配置项

  • 在实际的开发环境中,一般都会有多个配置文件,这是因为每个配置文件,对应一个生产环境,而每个环境的资源端口号配置都是有变换的,所以需要有多个配置文件,为了方便,在yml中将配置文件可以分为主次,主配置文件指定本次运行要使用哪个配置文件 spring.profiles.active这个属性配置使用哪个配置文件。
    配置文件的名字都是由规范的,必须都是Application开头,主配置文件的名字就是Application,次配置文件的名字Application-xxx,只有xxx可以自定义。
    配置属性的acitve的value值就是xxx
    比如现在有这么多配置文件:
    在这里插入图片描述
    如果想让Application-dev做最终的配置文件,就必须要在默认的配置文件中设置spring.profiles.active=dev。
    此时九江dev配置文件给配置完成了。

其他的配置项文档:Spring Boot配置项文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109054.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt Quick Layouts Overview

Qt快速布局概述 #【中秋征文】程序人生,中秋共享# Qt快速布局是用于在用户界面中排列项目的项目。由于Qt快速布局还可以调整其项目的大小,因此它们非常适合可调整大小的用户界面。 开始 可以使用文件中的以下导入语句将 QML 类型导入到应用程序中。.qml…

python: excel假期时间提取统计

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/9/3 7:04 # User : geovindu # Product : PyCharm # Proje…

Vulkan入门——编译Shaderc

编译 Vulkan-Samples时,遇到了如下shaderc编译报错。 ninja: error: /Users/xiaxl/Library/Android/sdk/ndk/21.1.6352462/sources/third_party/shaderc/libs/c_static/armeabi-v7a/libshaderc.a, needed by ../../../../build/intermediates/cmake/debug/obj/arme…

【CVPR2021】MVDNet论文阅读分析与总结

Challenge: 现有的目标检测器主要融合激光雷达和相机,通常提供丰富和冗余的视觉信息 利用最先进的成像雷达,其分辨率比RadarNet和LiRaNet中使用的分辨率要细得多,提出了一种有效的深度后期融合方法来结合雷达和激光雷达信号。 MV…

还没用熟 TypeScript 社区已经开始抛弃了

根据 rich-harris-talks-sveltekit-and-whats-next-for-svelte 这篇文章的报道, Svelte 计划要把代码从 TS 换到 JS 了。 The team is switching the underlying code from TypeScript to JavaScript. That and the update will then allow the team to incorporate…

SpingMyc项目如何搭建

目录 一、创建项目 二、环境搭建 (1)引入相关依赖 (2)在web.xml中配置前端控制器DispatcherServlet (3)编写SpringMVC核心配置文件springmvc.xml 三、测试是否成功 (1)编写控…

WebGL 正确处理对象前后的关系——隐藏面消除(深度测试)/ 深度冲突

目录 前言 验证WebGL处理对象前后关系的规则——后绘制的图形覆盖先绘制的图形 隐藏面消除(深度测试) 开启隐藏面消除功能,需要遵循以下两步: 1.开启隐藏面消除功能。 gl.enable()函数规范 2.在绘制…

Linux常用命令字典篇

Linux命令 1. 翻页查看文件 less [-N] 文件名:可以向后翻页,也可以向前翻页,-N表示显示行号 more 文件名:仅可以向后翻页 2. 端口占用信息查看 netstat -tunlp | grep 端口号:查看端口号对应的信息 lsof i: 端口号…

sqlserver查询表中所有字段信息

精简 SELECT 字段名 a.name,主键 case when exists(SELECT 1 FROM sysobjects where xtypePK and parent_obja.id and name in (SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id a.id AND colida.colid))) then √ else …

zabbix 钉钉微信企微告警(动作操作消息内容模板)

一、环境配置 1、配置zabbix服务端 2、配置监控主机&监控项&监控模板 zabbix配置安装_this page is used to test the proper operation of _疯飙的蜗牛的博客-CSDN博客 二、触发器 触发器的本质就是一个条件判断,对于不同的监控数据来说,我…

k8s集群中部署服务之部署描述文件准备

微服务部署描述文件Deploy.yaml 一、各微服务创建部署描述文件 1.1 mall-auth-server --- apiVersion: apps/v1 kind: Deployment metadata:name: mall-auth-servernamespace: sangomalllabels:app: mall-auth-server spec:replicas: 1selector:matchLabels:app: mall-auth-s…

算法通过村第七关-树(递归/二叉树遍历)白银笔记|递归实战

文章目录 前言1. 深入理解前中后序遍历从小到大递推分情况讨论,明确结束条件组合出完整的方法:从大到小 画图推演 总结 前言 提示:没有客观公正的记忆这回事,所有的记忆都是偏见,都是为自己的存活而重组过的经验。--国…