Spring boot 配置文件优先级
概述
Spring boot 除了内置配置文件之外,还支持支持外置配置文件,外置的配置文件可以放在和 jar 相同的目录下,或者放在 jar 所在目录下的 config 目录下,另外 spring boot 的配置文件支持 yaml 格式和 properties 格式,如果这些配置文件同时存在,那么谁的优先级更高呢?
配置文件优先级
以 maven 项目的为例,配置文件的优先级从低到高排列如下:
- resources/application.yml
- resources/application.properties
- resources/config/application.yml
- resources/config/application.properties
- <jar所在目录>/application.yml
- <jar所在目录>/application.properties
- <jar所在目录>/config/application.yml
- <jar所在目录>/config/application.properties
jar 指是 spring boot 项目构建后的 jar 包。从上面的优先级顺序可以看出两点:
- 外部配置文件的优先级比 jar 内部配置文件(resources 目录下的配置文件最终会打包到 jar 文件中)优先级文件高;
- 相同位置,properties 配置文件的优先级高于 yml 配置文件。
指定配置文件位置
上面提到外部配置文件放在 <jar 所在目录> 或者 <jar所在目录>/config/ 目录下会被自动识别和加载并且优先级高于 Jar 内部配置文件。Spring boot 还支持指定配置文件位置:
java -jar myproject.jar --spring.config.location=\
/path/to/default.properties,\
/path/to/override.properties
--spring.config.location
指定的配置文件列表,后面的配置文件优先级高于前面。
注:以上配置文件优先级基于 spring boot 2.7.7,其他版本或有不同,请自行验证!
有问题吗?点此反馈!
温馨提示:反馈需要登录