springboot的外部配置文件

springboot外部属性加载文档

配置文件*.properties*.yaml生效的优先级

  1. -profile.properties>-profile.yaml>.properties>.yamlprofile如果未指明,默认为default
  2. 第一种:当前目录,即jar包的当前目录.
    1. 子目录的叫做config的直接子目录,比如,当前目录下./child222/config
    2. 当前目录中的叫config的子目录,./config
    3. jar包当前目录 .
  3. 第二种:类路径classpath,即jar包中的BOOT-INF/classes/
    1. 类路径下的名称为config的包
    2. 类路径根
注意:

​ 这里说的jar包的当前目录如果要生效,指的是,执行命令java -jar xxxx.jar ...必须在jar包目录下执行,否则将加载不了第一个jar包的当前目录.下的配置。

以下是机翻文档,可以不用看了,看前面结论就行

springboot加载配置文件顺序

springboot配置文件有 application.propertiesapplication.yaml两种,

加载配置文件*.properties*.yaml的顺序为:

  1. 从类路径classpath,即jar包中的BOOT-INF/classes/
    1. 类路径根
    2. 类路径下的包/config
  2. 从当前目录,即jar包的./
    1. 当前目录
    2. 当前目录中的子目录/config
    3. 子目录的直接子目录/config

诶,顺序是不是反了?

不是,文件加载顺序是这样,但是,后加载的配置文件的属性将会覆盖前面加载值,所以配置生效的优先级是和加载优先级相反。

设置配置文件属性

修改配置文件的默认加载名称

即修改spring.config.name

java -jar myproject.jar --spring.config.name=myproject

修改配置文件加载位置

即修改spring.config.location

 java -jar myproject.jar --spring.config.location=\
    optional:classpath:/default.properties,\
    optional:classpath:/override.properties
# 其中optional代表后面的文件可有可无。非必须

以下属性加载顺序:排在后面的会覆盖前面的属性。

  1. 默认属性(通过设置指定)。SpringApplication.setDefaultProperties
  2. @PropertySource类上的注释。请注意,在刷新应用程序上下文之前,不会将此类属性源添加到 中。配置某些属性(如 和)在刷新开始之前读取这些属性为时已晚。@Configuration``Environment``logging.*``spring.main.*
  3. 配置数据(如文件)。application.properties
  4. 仅在 中具有属性的 ARandomValuePropertySource``random.*
  5. 操作系统环境变量。
  6. Java 系统属性 ()。System.getProperties()
  7. 中的 JNDI 属性。java:comp/env
  8. ServletContext初始化参数。
  9. ServletConfig初始化参数。
  10. 属性来自(嵌入在环境变量或系统属性中的内联 JSON)。SPRING_APPLICATION_JSON
  11. 命令行参数。
  12. properties属性。在@SpringBootTest和测试批注上可用,用于测试应用程序的特定切片。
  13. @TestPropertySource测试的注释。
  14. Devtools 全局设置属性在 devtools 处于活动状态时在目录中。$HOME/.config/spring-boot

配置数据文件按以下顺序:排在后面的会覆盖前面的属性。

  1. 打包在 jar 中的应用程序属性(和 YAML 变体)。application.properties
  2. 特定于配置文件的应用程序属性打包在 jar 中(和 YAML 变体)。application-{profile}.properties
  3. 打包 jar(和 YAML 变体)之外的应用程序属性。application.properties
  4. 打包 jar(和 YAML 变体)之外的特定于配置文件的应用程序属性。application-{profile}.properties

这里的{profile},如果没有指定,就是default

你可能感兴趣的:(springboot,spring,boot,spring,java)