yaml配置文件的写法
springboot提供了一个全局的配置文件,文件名必须为application,格式可以为properties和yaml\yam,官方推荐我们使用yaml或者yam形式
两种合适的区别:
properties文件存储方式:
key=value
yaml方式存储:
key: 空格value
yaml格式文件语法:
yaml存储单个的值(字符串、数值、布尔等)
key: value
注意:一定要注意格式,中间会有一个空格。
双引号不会转义特殊字符 \n就代表了换行
单引号会自动转义特殊字符,会把特殊字符作为字符串输出
yaml存储map格式\对象格式数据
key:
key1: v1
key2: v2
例子:map
maps:
haha: 13
lala: 24
对象:
person:
name: 张三
age: 12
可以转换为行内写法
key: {
key1: v1,key2: v2}
例如:
person: {
name: 张三,age: 18}
注意格式写法,不要把空格忘了
yaml数组格式数据:
格式:
key:
- v1
- v2
- v3
- ...
例子
lists:
- haha
- lala
- papa
行内写法:
key: [v1,v2,v3]
例子:
lists: [haha,lala,papa]
2.yaml的使用
一般的配置文件,都是给javabean中的属性赋值用的,properties文件被加载后(也可以@PropertiesSource(value=“classpath:xxx.properties”)加载指定的文件),我们可以使用${key}来获取value的值,而我们的yaml则没有那么麻烦。
1.在项目的resources目录下,创建application.yaml文件(会自动的被springBoot识别)
2.创建pojo包,并创建2个用于测试的实体类:
3.在application.yaml文件中配置:
springBoot会自动的加载application开头的properties或者yaml文件,然后通过@ConfigurationProperties(prefix = “person”)这个注解,匹配到yaml文件里面的person,最终通过实体类的set方法,给属性赋值:
这样我们可以很方便的给属性赋值了。
3. 解决使用注解绑定yanl文件是出现红色警告的问题
绑定之后,实体类上会一直有这个红色的,我们可以导入一个依赖,然后重启就可以消失掉了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4.yaml占位符
person:
name: qinjiang${
random.uuid} # 随机uuid
age: ${
random.int} # 随机int
happy: false
birth: 2000/01/01
maps: {
k1: v1,k2: v2}
lists:
- code
- girl
- music
dog:
#如果person.hello存在,就是用person.hello的值,不存在使用other
name: ${
person.hello:other}_旺财
age: 1
5. 结论:
结论摘录自:狂神说java
# 多环境切换及配置文件的优先级 ## 1.多环境切换 1.yaml方式: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210116160053845.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzQzMTEyMw==,size_16,color_FFFFFF,t_70)
默认使用的是上边的那个,当我们想要使用其他环境时,可以在默认的里面添加:
2.properties文件切换环境
只需要创建一个默认的配置文件
application.properties
其他的环境可以为:application-xxx.properties
当我们要切换的时候,在application.properties文件中,添加代码
spring.profiles.active=xxx
即可替换
配置文件的存放位置及优先级
配置文件可以存放在:
项目跟目录下的config目录下
项目根目录
classpath(resources)下的config目录下
classpath下
当配置文件名称相同时,优先级为:
项目目录下的config 》 项目的根目录 》 classpath下的config目录 》 classpath下的