Spring Boot 配置实现方案

本文介绍 Spring Boot 2 配置实现方案。


目录

  • 配置方式
  • 注入方式
  • 属性值优先级
  • 配置文件格式
  • 配置文件位置

配置方式

Spring Boot 允许使用的外部外配置方式包括:

  • properties 文件
  • YAML 文件
  • 环境变量
  • 命令行参数

注入方式

属性值可以使用注解 @Value 直接注入 bean 对象中,或通过 @ConfigurationProperties 注解绑定到类定义上。


属性值优先级

属性值按以下优先级顺序覆盖:

  • Devtools 激活时 home 目录下全局设置属性
  • 添加 @TestPropertySource 注解的测试
  • 测试中的属性,可在 @SpringBootTest 注解和用于测试应用程序特定片段的测试注解
  • 命令行参数
  • SPRING_APPLICATION_JSON 中属性,嵌入在环境变量或系统属性中的内联JSON
  • ServletConfig 初始化参数
  • ServletContext 初始化参数
  • java:comp/envJNDI 属性
  • Java 系统属性 System.getProperties()
  • 操作系统环境变量
  • 仅在 random.* 中拥有属性的 RandomValuePropertySource
  • 打包 jar 文件外的 Profile 指定应用属性(application-{profile}.propertiesYAML
  • 打包 jar 文件内的 Profile 指定应用属性(application-{profile}.propertiesYAML
  • 打包 jar 文件外的应用属性(application-{profile}.propertiesYAML
  • 打包 jar 文件内的应用属性(application-{profile}.propertiesYAML
  • 定义 @Configuration 类中使用 @PropertySource 注解的属性
  • SpringApplication.setDefaultProperties 指定的默认属性

配置文件格式

Spring Boot 接受 propertiesYAML 两种格式的配置文件,尽管创建 Spring Boot 工程默认生成的是 properties 格式配置文件,但是个人来讲更偏好于 YAML 格式配置文件,优点:
(1) 配置层级关系更清晰;
(2) 在同样配置下占用的字符数量小于或等于 properties 格式配置文件。

注意:YAML 配置文件后缀名为 .yml


配置文件位置

Spring Boot 会从以下位置加载配置文件。

  • 当前目录下 /config 子目录
  • 当前目录
  • 类路径下 /config
  • 类路径根目录

注意:
(1) 以上列表中较高位置定义的属性会覆盖在较低位置中定义的属性;
(2) 推荐将所有配置文件统一放在一个 config 子目录中。

你可能感兴趣的:(Spring Boot 配置实现方案)