1. 程式人生 > >spring boot 使用屬性載入順序

spring boot 使用屬性載入順序

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); } } }