跳到主要内容

Spring Boot 3.x特性-配置与配置源

系列文章:Spring Boot 3.x 系列教程

文章目录

    • 1.外部化配置
  • 2.访问命令行属性
  • 3.JSON应用程序属性
  • 4.外部应用程序属性
    • 可选的路径
    • 通配符路径
    • Profile特定文件
    • 导入附加数据
    • 导入无扩展名文件
    • 使用配置树
    • 属性占位符
    • 使用多文档文件
    • 激活属性
  • 使用YAML
    • YAML映射到属性
    • 直接加载YAML
  • 配置随机值
  • 配置系统环境属性

1.外部化配置

Spring Boot支持外部化配置,这样就可以在不同的环境中使用相同的应用程序代码。你可以使用各种外部配置源,包括Java属性文件YAML文件环境变量命令行参数
属性值可以通过使用@Value注释直接注入到bean中,可以通过Spring的Environment抽象访问,也可以通过@ConfigurationProperties绑定到结构化对象。

Spring Boot使用了一个非常特殊的PropertySource顺序,其目的是允许合理地重写值。属性优先级按以下顺序(排序后的项覆盖前面的项)

1、 默认配置,(SpringApplication.setDefaultProperties设置的属性);
2、 @PropertySource注解配置在@Configuration类上,但是需要注意,在刷新应用程序上下文之前,这样的属性源不会添加到Environment中这对于配置某些属性(如logging.*spring.main.*)已经太迟了,这些属性需要在刷新开始之前被读取;

3、 配置数据,比如application.properties配置文件;
4、 RandomValuePropertySource,它的属性只有random.*
5、 操作系统环境变量;
6、 Java系统属性(System.getProperties());
7、 来自java:comp/envJNDI属性;