Spring boot读取配置文件总结

Spring boot读取配置文件总结

首先需要说明一下Spring boot读取PropertySource的顺序:

  1. Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
    开发工具全局设置的属性
  2. @TestPropertySource设置test类属性的文件
  3. @SpringBootTest#properties注解设置Test类的属性
  4. 命令行参数
  5. SPRING_APPLICATION_JSON的属性
  6. ServletConfig初始化参数
  7. ServletContext初始化参数
  8. JNDI参数
  9. Java System Properties
  10. 系统环境变量
  11. RandomValuePropertySource 仅包含random.*的属性文件
  12. jar包外的application-{profile}.properties文件
  13. jar包内的application-{profile}.properties文件
  14. jar包外的application.properties
  15. jar包内的application.properties
  16. @Configuration注解的bean上引入的@PropertySource引入的属性文件
  17. 使用SpringApplication.setDefaultProperties设置的默认属性

值得一提的是:
Spring boot支持relaxed binding,所有可以有不同的形式。比如:

@ConfigurationProperties("foo")
public class FooProperties {

    private String id;
    private String firstName;
    private String lastName;

    // getters and setters

}

然后可以使用下面的形式进行定义:

name Example
uniform foo.id - foo.first-name - foo.last-name
camel case foo.id - foo.firstName - foo.lastName
underscore foo.id - foo.first_name - foo.last_name
upper case FOO_ID - FOO_FIRST-NAME - FOO_LAST-NAME

Spring boot支持松绑定,主要是因为有些property source不支持特定的字符, 有些系统要求属性必须是大写,或者不能包括.这个符号。

设置profile的方式

  1. -Dspring.profiles.active=env
    这种会读取对应的env属性配置文件
  2. @ActiveProfiles注解
    这种是用来设置通过bean configuration的profile。不会去读取env的配置
    文件

你可能感兴趣的:(JAVA,Spring)