Spring boot 配置文件优先级

Last Modified: 2023/01/07

概述

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,其他版本或有不同,请自行验证!

有问题吗?点此反馈!

温馨提示:反馈需要登录