Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级
Posted 小小工匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级相关的知识,希望对你有一定的参考价值。
文章目录
低版本 ConfigFileApplicationListener
我们知道 以前我们的配置文件的优先级 是由 ConfigFileApplicationListener
处理的
大意如下:
EnvironmentPostProcessor通过从众所周知的文件路径加载properties来配置上下文环境。默认的properties来自
application.properties/application.yml文件,这些文件来自以下路径“,
file:./config/ 根文件夹(项目文件夹)下的config目录
file:./config/@literal */ 根文件文件夹(项目文件夹)下的config/*/目录
file:./ 根文件文件夹(项目文件夹)下
classpath:config/ classpath下的config/
classpath: classpath下
新版本 ConfigDataEnvironmentPostProcessor
从2.4开始, 改成了 ConfigDataEnvironmentPostProcessor
我们继续看下 ConfigDataEnvironment
规则有点变化 项目根路径下的config 项目根路径下的config/*/ 调整了顺序
规则验证
[classpath] classpath:application.properties vs classpath:application.yml
Tomcat started on port(s): 9999 (http) with context path ''
配置的main/resources其实就是上面的classpath
[classpath] resources/config(运行路径:classpath:/config/)下有application.properties
Tomcat started on port(s): 7777 (http) with context path ''
resouces/config的优先级大于resources,即,classpath:/config/>classpath:/
[file] 项目根路径下的application.properties
在项目的根路径下新建了application.properties文件,起server.port为6666
启动端口为 6666
优先级为:file:/>classpath:/config/>classpath:/
[file] 项目根路径下config的application.properties
启动端口 4444
[file] 项目根路径下config/xxxx的application.properties
在项目的路径下增加config/artisan/路径,且增加application.properties文件,端口号 5555
启动端口 555
小结
-
同级下,
application.properties
文件优先级大于application.yml
,前者会覆盖后者 -
springboot的默认加载路径有5个,分别是
classpath:/、classpath:/config/、项目根路径、项目根路径/config/*/、项目根路径/config/
,会从这5个路径下加载application.properties或application.yml -
5个默认的加载路径的优先级为:
项目根路径下的config/*/ > 项目根路径下的config > 项目根路径 > classpath:/config > classpath:/
,前者会覆盖后者
以上是关于Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Spring Boot 应用程序 pom 同时需要 spring-boot-starter-parent 和 spring-boot-starter-web?
《02.Spring Boot连载:Spring Boot实战.Spring Boot核心原理剖析》