Spring Boot学习总结(13)——Spring Boot加载application.properties配置文件顺序规则

SpringApplication会从以下路径加载所有的application.properties文件:
1、file:./config/(当前目录下的config文件夹)
2、file:./(当前目录)
3、classpath:/config/(classpath下的config目录)
4、classpath:/(classpath根目录)

优先级由上至下。
注意:优先级是指属性最后使用的值,而不是说仅仅扫描优先级高的路径,如果发现了application.properties文件就停止。例如classpath:/config/和file:./config/都存在配置文件,那么加载过程会加载classpath:/config/路径下配置文件的所有属性,然后再加载file:./config/路径下配置文件的属性并替换已有的属性。此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application.properties里的属性。
如果你不想使用application.properties的格式命名配置文件,那么可以通过环境变量spring.config.name来设置文件名称,例如:
$ java -jar myproject.jar --spring.config.name=zhy-sys.properties此时,要加载的配置文件名为zhy-sys.properties。除了修改名称,还可以使用 spring.config.location 来添加要加载的路径。例如我们以这个命令启动JVM:$ java -jar myapp.jar --spring.config.location=classpath:/myconfig/,file:./myconfig/
那么加载application.properties文件的路径以及优先级会变为:
1、file:./myconfig/
2、classpath:/myconfig/
3、file:./config/
4、file:./
5、classpath:/config/
6、classpath:/

spring.config.location环境变量也可以直接设定到加载文件的名称,例如:--spring.config.location=classpath:/default.properties
通常情况下这样做并没有太大问题,但是结合到Profiles文件特性时,会导致无法根据标记加载对应的Profiles文件。
由于配置文件路径和配置文件名称在容器未启动时就需要声明,所以最好在OS的环境变量、JVM的系统环境变量或命令行参数就设定它。

spring 源码如下:


  
  
  1. public class ConfigFileApplicationListener
  2. implements EnvironmentPostProcessor, SmartApplicationListener, Ordered {
  3. private static final String DEFAULT_PROPERTIES = "defaultProperties";
  4. // Note the order is from least to most specific (last one wins)
  5. private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/";
  6. private static final String DEFAULT_NAMES = "application";
  7. private static final Set<String> NO_SEARCH_NAMES = Collections.singleton( null);
  8. /**
  9. * The "active profiles" property name.
  10. */
  11. public static final String ACTIVE_PROFILES_PROPERTY = "spring.profiles.active";

*.properties 会覆盖 *.yml
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接: https://blog.csdn.net/u012562943/article/details/81939072
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值