spring boot 項目的配置文件加載順序
加載順序如下
- 在命令行中傳入的參數(shù)。
- SPRING_APPLICATION_JSON 中的屬性吼拥。SPRING_APPLICATION_JSON 是以JSON格式配置在系統(tǒng)環(huán)境變量中的內(nèi)容。
- java:comp/env中的JNDI屬性线衫。
- Java的系統(tǒng)屬性凿可,可以通過System.getProperties()獲得的內(nèi)容。
- 操作系統(tǒng)的環(huán)境變量桶雀。
- 通過random.*配置的隨機屬性。
- 位于當(dāng)前應(yīng)用 jar 包之外唬复,針對不同{profile}環(huán)境的配置文件內(nèi)容矗积,例如application-{profile}.properties或是YAML定義的配置文件。
- 位于當(dāng)前應(yīng)用 jar 包之內(nèi)敞咧,針對不同{profile}環(huán)境的配置文件內(nèi)容棘捣,例如application-{profile}.properties或是YAML定義的配置文件。
- 位于當(dāng)前應(yīng)用jar包之外的application.properties和YAML配置內(nèi)容休建。
- 位于當(dāng)前應(yīng)用jar包之內(nèi)的application.properties和YAML配置內(nèi)容乍恐。
- 在@Configuration注解修改的類中评疗,通過@PropertySource注解定義的屬性。
- 應(yīng)用默認屬性茵烈,使用 SpringApplication.setDefaultProperties 定義的內(nèi)容百匆。
說明
優(yōu)先級按上面的順序由高到低,數(shù)字越小優(yōu)先級越高
當(dāng)加載過程中發(fā)現(xiàn)有相同屬性已經(jīng)加載過了,則不會再覆蓋值
可以看到呜投,其中第7項和第9項都是從應(yīng)用jar包之外讀取配置文件加匈,
所以,實現(xiàn)外部化配置的原理就是從此切入仑荐,為其指定外部配置文件的加載位置來取代jar包之內(nèi)的配置內(nèi)容雕拼。
通過這樣的實現(xiàn),我們的工程在配置中就變得非常干凈粘招,只需在本地放置開發(fā)需要的配置即可啥寇,而不用關(guān)心其他環(huán)境的配置,由其對應(yīng)環(huán)境的負責(zé)人去維護即可洒扎。
這也是spring cloud config實現(xiàn)的機制基礎(chǔ)
摘抄自<<Spring Cloud微服務(wù)實戰(zhàn)>>
官網(wǎng)上的:
https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-external-config.html