0
点赞
收藏
分享

微信扫一扫

SpringBoot--->>>高级特性-->>外部化配置

七公子706 2022-03-12 阅读 98

2、外部化配置

在一个程序跑起来后,总是需要获取内部配置文件或者运行环境中的配置项,SpringBoot 应用允许把配置外置化,外部配置源优先级:java properties配置文件、yaml文件、环境配置文件、命令行参数【从前往后优先级越大,命令行最大】,就像 profile 文件打包后运行依旧能在运行时 通过 --配置文件配置项 修改需要修改的配置。

SpringBoot 应用可以直接获取当前运行环境中的环境变量信息和其他相关信息。

官网:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config

配置文件优先级顺序【从官网翻译复制的】

Spring Boot 使用一种非常特殊的PropertySource顺序,旨在允许明智地覆盖值。属性按以下顺序考虑(较低项目的值覆盖较早的项目):

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

常用的配置文件方式就是:.properties配置文件、.yaml配置文件,这些配置文件的优先级也是底下的比上面的高

配置数据文件按以下顺序考虑:

【也是底下的比上面的优先级高】

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

建议程序内使用一种格式的配置文件:优先考虑 .yaml 和 .properties

程序内的配置文件寻找路径:

当你在程序内使用了外部配置文件记录配置后,SpringBoot 将从这些地方寻找加载外部配置文件。越底下优先级越高。

  1. From the classpath
    1. The classpath root【maven 工程的resource目录下】
    2. The classpath /config package 【resource 目录里面名字叫 config 的目录里面】
  2. From the current directory
    1. The current directory 【或者只要你在当前程序同级目录下创建配置文件,一样能加载配置】
    2. The /config subdirectory in the current directory 【当前程序同级目录下建立一个 config 目录,里面加一个配置文件配置一样能生效】
    3. Immediate child directories of the /config subdirectory 【当前程序同级config目录的有一级子目录config里面加配置文件。】

还有如果这些方式都被别人用了但你还是需要更改配置,你可以先创建一个配置文件并写好配置,然后 通过 java -jar 当前程序jar包.jar --spring-config-name=自定义的配置文件名,这样你的配置就能被用到。(官网这么说的没试过)

举报

相关推荐

0 条评论