Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级

简介: Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级

20210516092951966.png

低版本 ConfigFileApplicationListener


我们知道 以前我们的配置文件的优先级 是由 ConfigFileApplicationListener 处理的


0d41c75de6434a398a69257ced640924.png

9d8b6cb79584486da62e44bee7c5d7c6.png

大意如下:

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


44e13089745d47a18420667c3e909bc0.png


我们继续看下 ConfigDataEnvironment


70362878e13647f4b04771e4d5556cfa.png

规则有点变化 项目根路径下的config 项目根路径下的config/*/ 调整了顺序


规则验证

[classpath] classpath:application.properties vs classpath:application.yml

53eead71f5404eafb05b8d5816f249f0.png

 Tomcat started on port(s): 9999 (http) with context path ''

配置的main/resources其实就是上面的classpath


[classpath] resources/config(运行路径:classpath:/config/)下有application.properties


85fc112f231d42a8a2777c57e90f7dca.png


Tomcat started on port(s): 7777 (http) with context path ''


resouces/config的优先级大于resources,即,classpath:/config/>classpath:/


[file] 项目根路径下的application.properties

在项目的根路径下新建了application.properties文件,起server.port为6666


ca38f8ff611144d88f0e15666ac0ab98.png


启动端口为 6666

优先级为:file:/>classpath:/config/>classpath:/


[file] 项目根路径下config的application.properties


297e23e2d8ff4cb7bbf0fd103bb9d1a5.png启动端口 4444


[file] 项目根路径下config/xxxx的application.properties


在项目的路径下增加config/artisan/路径,且增加application.properties文件,端口号 5555

5ff99e71fcc04b53a05fea6ab19beefb.png

启动端口 555


小结


同级下,application.properties文件优先级大于application.yml,前者会覆盖后者


springboot的默认加载路径有5个,分别是classpath:/、classpath:/config/、项目根路径、项目根路径/config/*/、项目根路径/config/,会从这5个路径下加载application.properties或application.yml


5个默认的加载路径的优先级为:项目根路径下的config/*/ > 项目根路径下的config > 项目根路径 > classpath:/config > classpath:/,前者会覆盖后者

相关文章
|
26天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
40 0
|
3月前
|
XML Java 数据库
【Spring】SpringBoot 配置文件
【Spring】SpringBoot 配置文件
|
4月前
|
Java
SpringBoot配置文件格式(3种)及优先级
SpringBoot配置文件格式(3种)及优先级
66 0
|
2月前
|
安全 Java 数据库连接
《Spring Boot配置文件大揭秘:看懂 application.yaml 与 bootstrap.yaml 的不同》
《Spring Boot配置文件大揭秘:看懂 application.yaml 与 bootstrap.yaml 的不同》
76 0
|
4月前
|
前端开发 JavaScript Java
Springboot 使用thymeleaf 服务器无法加载resources中的静态资源异常处理
Springboot 使用thymeleaf 服务器无法加载resources中的静态资源异常处理
169 0
|
1月前
|
Java 数据库连接 API
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
49 0
|
5天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
19 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
7天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
30 0
【Spring系列】Sping VS Sping Boot区别与联系
|
11天前
|
Java Shell 测试技术
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
21 0
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
|
14天前
|
缓存 前端开发 Java
SpringBoot启动后加载初始化数据
SpringBoot启动后加载初始化数据