打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Springboot 中配置文件的优先级和加载顺序

1. 若application.yml 和bootStrap.yml 在同一目录下,则bootStrap.yml 的加载顺序要高于application.yml,即bootStrap.yml  会优先被加载。

   原理:bootstrap.yml 用于应用程序上下文的引导阶段。

              bootstrap.yml 由父Spring ApplicationContext加载。

            ·bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
            ·application.yml 可以用来定义应用级别的,如果搭配 spring-cloud-config 使用 application.yml 里面定义的文件可以实现动态替换。

 

 

2. 不同位置的配置文件的加载顺序:

   在不指定要被加载文件时,默认的加载顺序:由里向外加载,所以最外层的最后被加载,会覆盖里层的属性(参考官网介绍)

SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment: 

A /config subdirectory of the current directory.    //位于与jar包同级目录下的config文件夹,
The current directory                             //位于与jar包同级目录下
A classpath /config package          //idea 环境下,resource文件夹下的config文件夹
The classpath root                                //idea 环境下,resource文件夹下  (1->4, 外->里)
The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).

 

3. 可以通过属性指定加载某一文件:

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
当通过spring.config.location 指定一个配置文件时,配置文件的搜索顺序如下:

file:./custom-config/
classpath:custom-config/
file:./config/
file:./
classpath:/config/
classpath:/
最下层的优先加载,所以最上层的属性会覆盖下层的属性;

 

4. 如果使用spring-cloud-config时,项目内部的resource下有bootstrap.yml文件,并且在bootstrap.yml 里配置spring.application.name, git.url,spring.active.profies. 将项目打成jar包,放到服务器上,与jar包并列的位置,有start.sh脚本, 

a. 在start 脚本里指定了配置文件:spring.config.location=./bootstrap.yml, 则配置文件的加载顺序将为:

1. cloud-config 仓库里指定的yml 配置;

2. ./bootstrap.yml

3. classpath:/bootstrap.yml

4. 外部application.yml

5. 内部application.yml

b. 在start 脚本里指定了配置文件:spring.config.location=./application.yml, 则配置文件的加载顺序将为:

1. cloud-config 仓库里指定的yml 配置;

2. ./application.yml

3.  classpath:/application.yml

4. ./bootstrap.yml

5. classpath:/bootstrap.yml

所以,不管是jar包内还是jar运行的同级目录下,只要包含bootstrap.yml ,且为云配置,则云配置文件会覆盖其他配置文件;

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
读取外置config文件
SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别
springBoot指定application.yml文件
Spring Cloud学习教程2【面试+工作】
五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强?
2020最新总结,大厂常问的SpringBoot高频面试题(30题+答案+学习导图)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服