優先級按照下面的順序由高到低,數字越小優先級越高:
- 在命令行中傳入的參數。
- SPRING_APPLICATION_JSON中的屬性。SPRING_APPLICATION_JSON是以JSON格式配置在系統環境變量中的內容。
- java:comp/env中的JNDI屬性。
- Java的系統屬性,可以通過System.getProperties()獲得的內容。
- 操作系統的環境變量。
- 通過random.*配置的隨機屬性。
- 位於當前應用jar包之外,針對不同{profile}環境的配置文件內容,例如application-{profile}.properties或是YAML定義的配置文件。
- 位於當前應用jar包之內,針對不同{profile}環境的配置文件內容,例如application-{profile}.properties或是YAML定義的配置文件。
- 位於當前jar包之外的application.properties和YAML配置內容。
- 位於當前jar包之內的application.properties和YAML配置內容。
- 在@Configuration註解修改的類中,通過@PropertySource註解定義的屬性。
- 應用默認屬性,使用SpringApplication.setDefaultProperties定義的內容。
此外,bootstrap.yml(bootstrap.properties)的加載順序優先於application.yml(application.properties),比如使用 Spring Cloud Config 配置中心時,這時需要在 bootstrap 配置文件中添加連接到配置中心的配置屬性來加載外部配置中心的配置信息。
官網截圖:
具體用法可參考: https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/spring-boot-features.html#boot-features-external-config