分析SpringBoot配置文件加载顺序

一、分场景说明

1.相同文件类型

优先级顺序如下,从前往后,优先级递增,优先级高的覆盖优先级低配置,file:./config/优先级最高

classpath:/,classpath:/config/,file:./,file:./config/*/,file:./config/

file:./表示从工程根目录开始查找;

2.不同文件类型

properties->xml->yml->yaml

properties最先加载,yaml最后加载

3.关于Profile

加载的文件名规则:application-{profile}.文件类型

3.1.spring.profiles.include

可以同时让多个配置文件生效,多个用逗号分隔,后面的覆盖前面的

3.2.spring.profiles.active

使一个配置文件生效;如果不配置active,默认active为default;

3.3.当active和include配置同时存在

active优先级高于include;

3.4.嵌套

application配置文件嵌套的application-profile配置文件,application-profile再嵌套application-profile时,加载顺序从外到内,最深层嵌套的优先级最高,覆盖外层;

3.5.默认配置文件

文件名不带profile的为默认配置文件,有别于application-default文件,application-profile覆盖application默认配置文件;

二、关于”覆盖“的说明

我们所说的覆盖其实不是真正意义上的覆盖,也不是在spring容器加载的时候处理,而是在取数据的时候,关键源码:

org.springframework.core.env.AbstractEnvironment#getProperty(java.lang.String)

遍历所有已加载的配置文件PeropertySource,优先级高的放在list前面,根据key值依次取值,取到值时,直接return,所以,给人一种覆盖的现象;所有配置文件内容一直都存放在内存;

三、欢迎提问和补充

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值