4、YAML文件配置
SpringBoot项目中,大部分配置都有默认值,先替换默认配置,可以使用
application.properties或者application.yaml
YAML扩展名.yam或者.yaml
大小写敏感
使用缩进代表层级关系
相同部分只出现一次


新建一个application.yaml 写上 下面代码;运行

一、配置简单数据
语法: 数据名: 值
如: password : 123456
二、配置对象
语法:
对象:
属性名1: 属性值
属性名2: 属性值
# 或者
对象: {属性名1: 属性值,属性名2: 属性值}
如下:

注意:属性名前面的空格个数不限,相同的缩进代表一个级别,每个属性前的空格数一样就好了。
三、自定义配置集合
语法:
集合:
- 值1
- 值2
# 或者
集合:[值1,值2]
如下:

集合的元素也可以是对象,如下:

四、@value 读取配置文件中的数据
注:只能拿某一个值、对象里面某个熟悉、集合某个元素
写个controller,@Value 注解可以将配置文件中的值映射到Bean属性中



运行代码,在浏览器输入地址 http://127.0.0.1:8888/yaml1 可以看到浏览器出现“调用成功”


五、@ConfigurationProperties 读取配置文件中的数据
通过@ConfigurationProperties可以将配置文件中的配置自动与实体进行映射,这样可以将yml文件中的配置对象属性直接映射到Bean中。



再创建一个类 yamlController2




相同方式再生成 Setter

加上注解:@ConfigurationProperties(prefix ="book")



六、占位符${}配置与读取
作用(1):配置文件的值、使用配置文件的值
在yaml文件配置值,如下:

创建个Controller,写上如下代码,读取myConfig.myPort,即server.port:

运行,在浏览器输入 http://127.0.0.1:8888/yaml3
可以看到IDEA控制台输出8888
七、占位符${}随机生成数
例如:
# 随机生成数字
port1: ${random.value} # 随机生成uuid,无短杠
port2: ${random.uuid} # 随机生成uuid,有短杠
port3: ${random.int} # 随机生成整数
port4: ${random.int(10)} # 随机生成10以内数字
port5: ${random.int(100,200)} # 随机生成100-200的数
port6: ${random.long} # 随机生成长整型值
port7: ${random.long(100,200)} # 随机生成长整型100-200的值
八、配置文件存放位置和优先级
1、applicatio.yml、application.properties存放位置可以是:
优先级从高到低是:
根目录下的/config子目录 > 根目录下 > resources下的/config目录 > resources目录中
另外, .properties文件的优先级高于.yml
九、bootstrap
bootstrap是application的父容器,优先级高于application,也支持yaml、application。主要用于从外部引入Spring应用程序的配置

