springboot项目配置文件加载顺序
在 Spring Boot 项目中,配置文件的读取顺序决定了配置的优先级(后加载的配置会覆盖先加载的同属性配置)。Spring Boot 支持多种配置源(如 properties、yaml、环境变量、命令行参数等),核心配置文件(application.properties/application.yml)的读取顺序遵循从低优先级到高优先级的规则,同时还会结合外部配置源的优先级。
一 配置文件加载顺序
- 项目根目录下的
config子目录(./config/)- 优先级:最高
- 路径:
项目根目录/config/application.properties
- 项目根目录(
./)- 路径:
项目根目录/application.properties
- 路径:
classpath下的config目录(classpath:/config/)- 路径:
src/main/resources/config/application.properties
- 路径:
classpath根目录(classpath:/)- 优先级:最低(内置文件中)
- 路径:
src/main/resources/application.properties
注:如果是多环境配置(如application-dev.properties),激活的环境配置文件会覆盖主配置文件(application.properties)的同属性,且环境配置文件也遵循上述路径顺序。
二 配置文件类型的优先级(properties vs yaml)
如果相同目录下同时存在application.properties和application.yml:
application.properties优先级高于application.yml,是因为properties 的加载优先级更高,若同属性存在,properties 会覆盖 yaml
三 特殊场景:Profile 配置的加载顺序
当使用多环境配置(如application-dev.yml、application-prod.yml)时,加载顺序为:
- 先加载主配置文件(
application.yml/application.properties)。 - 再加载激活的 Profile 配置文件(如
application-dev.yml),后者覆盖前者的同属性。 - 如果激活多个 Profile(如
spring.profiles.active=dev,test),则按从左到右的顺序加载,后面的 Profile 覆盖前面的。
总结
配置优先级的核心规则:外部配置 > 内置配置;Profile 配置 > 主配置;后加载的配置 > 先加载的配置;命令行参数 > 所有其他配置。
2835

被折叠的 条评论
为什么被折叠?



