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

本文详细介绍了Spring Boot不同版本中配置文件的加载路径和优先级,包括低版本的ConfigFileApplicationListener和新版本的ConfigDataEnvironmentPostProcessor。重点讨论了[classpath]:application.properties与[classpath]:application.yml的比较,以及项目根路径下config目录下的配置文件如何影响加载顺序。总结了5个默认加载路径及其优先级,强调了在同一层级下,application.properties优先于application.yml。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述


低版本 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:/,前者会覆盖后者

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小工匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值