spring boot 使用属性加载顺序

来源:互联网 发布:网络命令ping 编辑:程序博客网 时间:2024/06/07 11:14

1.命令行中传入的参数

2.SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置再系统环境变量中的内容

3.java:comp/env中的JNDI属性

4.JAVA的属性,可以通过System.getProperties() 获得的内容

5.操作系统的环境变量

6.通过random.*配置的随机属性

7.位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如application-{profile}.properties或YAML定义的配置文件

8.位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如application-{profile}.properties或YAML定义的配置文件。

9.位于当前应用jar包之外的application.properties或YAML配置内容

10.位于当前应用jar包之内的application.properties或YAML配置内容

11.在@Configuration注解修改的类中,通过@PropertySource注解定义的属性

12.应用默认属性,使用SpringApplication.setDefaultProperties定义的内容


对于使用 spring cloud的应用,会在加载 application.properties 前加载 bootstrap.properties

加载的源码位于:org.springframework.cloud.bootstrap.BootstrapApplicationListener

public static final String BOOTSTRAP_PROPERTY_SOURCE_NAME = "bootstrap";public static final int DEFAULT_ORDER = -2147483643;public static final String DEFAULT_PROPERTIES = "defaultProperties";private int order = -2147483643;public BootstrapApplicationListener() {}public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {    ConfigurableEnvironment environment = event.getEnvironment();    if(((Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, Boolean.valueOf(true))).booleanValue()) {        if(!environment.getPropertySources().contains("bootstrap")) {            ConfigurableApplicationContext context = null;            String configName = environment.resolvePlaceholders("${spring.cloud.bootstrap.name:bootstrap}");            Iterator var5 = event.getSpringApplication().getInitializers().iterator();            while(var5.hasNext()) {                ApplicationContextInitializer<?> initializer = (ApplicationContextInitializer)var5.next();                if(initializer instanceof ParentContextApplicationContextInitializer) {                    context = this.findBootstrapContext((ParentContextApplicationContextInitializer)initializer, configName);                }            }            if(context == null) {                context = this.bootstrapServiceContext(environment, event.getSpringApplication(), configName);            }            this.apply(context, event.getSpringApplication(), environment);        }    }}

原创粉丝点击