https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files
SpringApplication 从 application.properties 文件中加载以下位置的属性,并将它们添加到 Spring 环境中:
- 当前目录的 /config 子目录
- 当前目录
- 类路径 /配置包
- 类路径根
列表按优先级排序(在列表中较高位置定义的属性将覆盖在较低位置定义的属性)。
您还可以使用 YAML ('.yml') 文件作为 '.properties' 的替代项。
如果不喜欢 application.properties 作为配置文件名,则可以通过指定 spring.config.name 环境属性切换到另一个文件名。您还可以使用 spring.config.location 环境属性(该属性是以逗号分隔的目录位置或文件路径列表)来引用显式位置。下面的示例演示如何指定其他文件名:
$ java -jar myproject.jar --spring.config.name=myproject
下面的示例演示如何指定两个位置:
$ java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
spring.config.name 和spring.config.location很早就被用来确定必须加载哪些文件。它们必须定义为环境属性(通常是 OS 环境变量、系统属性或命令行参数)。
如果 spring.config.location 包含目录(而不是文件),它们应该以 / 结尾(并且在运行时,在加载之前附加从 spring.config.name 生成的名称,包括特定于配置文件的文件名)。在 spring.config.location 中指定的文件将按原样使用,不支持特定于配置文件的变体,并且会被任何特定于配置文件的属性覆盖。
配置位置按相反的顺序进行搜索。默认情况下,配置的位置是类路径:/,类路径:/config/,file:./,file:./config/。生成的搜索顺序如下:
file:./config/
file:./
classpath:/config/
classpath:/
使用 spring.config.location 配置自定义配置位置时,它们将替换默认位置。例如,如果 spring.config.location 配置了值 classpath:/custom-config/,file:./custom-config/,则搜索顺序将变为:
file:./custom-config/
classpath:custom-config/
或者,当使用 spring.config.additional-location 配置自定义配置位置时,除了默认位置之外,还会使用它们。在默认位置之前搜索其他位置。例如,如果配置了类路径的其他位置:/custom-config/,file:./custom-config/,则搜索顺序将变为:
file:./custom-config/
classpath:custom-config/
file:./config/
file:./
classpath:/config/
classpath:/
此搜索顺序允许您在一个配置文件中指定默认值,然后在另一个配置文件中有选择地覆盖这些值。可以在某个默认位置的 application.properties(或使用 spring.config.name 选择的任何其他基名)中为应用程序提供默认值。然后,可以在运行时使用位于其中一个自定义位置中的其他文件覆盖这些默认值。