Spring编程:springboot属性配置和属性优先级

Posted 志波同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring编程:springboot属性配置和属性优先级相关的知识,希望对你有一定的参考价值。

Spring Boot 允许我们外部化程序的配置,以便我们可以在不同的环境中使用相同的应用代码。我们可以使用 properties、YAML、环境变量、命令行参数进行外部化配置。配置的属性值可以通过 @Value 注解直接注入到 beans 中,通过 Spring 环境抽象访问;也可以通过 @ConfigurationProperties 绑定到结构化对象中。

Spring Boot 使用一个非常特殊的 PropertySource 顺序,该顺序用来合理的覆盖属性值。属性优先级由高到低排序如下:

1 .spring-boot-devtools.properties

Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).

home 目录下的 .spring-boot-devtools.properties 文件优先级最高,但是需要激活 devtools。

2 @TestPropertySource

@TestPropertySource annotations on your tests.

测试时使用。

3 @SpringBootTest

properties attribute on your tests. Available on @SpringBootTest and the test annotations for testing a particular slice of your application.

4 Command line

Command line arguments.

5 SPRING_APPLICATION_JSON

Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property).
在环境变量、系统属性、命令行参数、JNDI 中配置的 SPRING_APPLICATION_JSON 属性。在 Spring Boot 的文档中有说明,命令行参数、JNDI 中配置的 SPRING_APPLICATION_JSON 也会生效。

6 ServletConfig

ServletConfig init parameters.

7 ServletContext

ServletContext init parameters.

8 JNDI

JNDI attributes from java:comp/env.

9 Java System properties

Java System properties (System.getProperties()).
Java系统属性。

10 OS environment variables

OS environment variables.
操作系统环境变量。

11 RandomValuePropertySource

A RandomValuePropertySource that has properties only in random.*.

12 outside Profile-specific application properties

Profile-specific application properties outside of your packaged jar (application-profile.properties and YAML variants).

13 inside Profile-specific application properties

Profile-specific application properties packaged inside your jar (application-profile.properties and YAML variants).

14 outside Application properties

Application properties outside of your packaged jar (application.properties and YAML variants).

15 inside Application properties

Application properties packaged inside your jar (application.properties and YAML variants).

16 @PropertySource

@PropertySource annotations on your @Configuration classes.

17 Default properties

Default properties (specified by setting SpringApplication.setDefaultProperties).

以上内容参考 Spring Boot 官方文档进行整理,文章内容仅代表个人观点,如有不正之处,欢迎批评指正,谢谢大家。

参考文档

Externalized Configuration

以上是关于Spring编程:springboot属性配置和属性优先级的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 以编程方式设置配置文件

以编程方式配置 Spring Boot 应用程序

Spring Boot 属性配置和使用

spring boot 配置属性 之 spring.profiles.include

Spring Boot 属性配置和使用(转)

Spring Boot 程序化日志配置