一、背景
SpringBoot的配置文件可以给环境变量中的指定key设置value,程序运行时候,从环境中通过key获得value,从而可以实现通过改变配置文件的值,控制程序运行效果,实现业务逻辑。
二、配置文件的位置
- ./
- ./config/
- ./config/*/
- resources/
- resources/config/
三、配置文件的类型
四、示例代码
springboot-config-load-order
五、演示结果
- 优先级高低的含义
对于key相同的配置项,优先级高的配置文件会覆盖掉优先级低的配置文件,
优先级低的配置文件,如果想要配置项起作用,只能采用不同的key
SpringBoot版本:>=2.4.2(截止文章发布,最高版本2.7.5)
位置优先级:(依次降低)
1> ./config/*/
2> ./config/
3> ./
4> Resources/config/
5> Resorces/
文件类型优先级:(依次降低)
1> .properties
2> .yml
3> .yaml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringBoot版本:2.4.1
位置优先级:(依次降低)
1> ./config/*/
2> ./config/
3> ./
4> Resources/config/
5> Resorces/
文件类型优先级:(依次降低)
1> .yaml
2> .yml
3> .properties
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringBoot版本:2.4.0
位置优先级:(依次降低)
1> ./config/
2> ./config/*/
3> ./
4> Resources/config/
5> Resorces/
文件类型优先级:(依次降低)
1> .yaml
2> .yml
3> .properties
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringBoot版本:2.3.[0,12].RELEASE
位置优先级:(依次降低)
1> ./config/
2> ./config/*/
3> ./
4> Resources/config/
5> Resorces/
文件类型优先级:(依次降低)
1> .properties
2> .yml
3> .yaml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringBoot版本:2.
位置优先级:(依次降低)
1> ./config/
2> 不会去加载./config/*/下的任何配置文件
3> ./
4> Resources/config/
5> Resorces/
文件类型优先级:(依次降低)
1> .properties
2> .yml
3> .yaml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
再原始的版本省略,感兴趣自行测试.
六、特殊情况
指定优先级配置:=xxx,该配置项服从以下规则:
- 该配置也是一个配置项,起作用的优先级服从上述规则
- 最高优先级的会覆盖掉低优先级的(注意不是合并而是覆盖)
- xxx可以指定多个配置文件,例如dev,alpha,prod,越靠后的优先级越高
- 被指定的配置文件xxx中不可以再重复出现=yyy的配置
- 优先级高的配置项才会起作用