SpringBoot中各配置文件的優先級及加載順序

咱們在寫程序的時候會碰到各類環境(開發、測試、生產),於是,在咱們切換環境的時候,咱們須要手工切換配置文件的內容。這大大的加大了運維人員的負擔,同時會帶來必定的安全隱患。java

爲此,爲了能更合理地重寫各屬性的值,SpringBoot經過對數據文件的優先級進行定義,定義了不一樣的加載順序,從而解決了這個問題。安全

1 在命令行中傳入的參數。app

2. SPRING APPLICATION JSON中的屬性。 SPRING_APPLICATION—JSON是以JSON格式配置在系統環境變量中的內容。運維

3. java:comp/env中的JNDI 屬性。dom

4. Java的系統屬性, 能夠經過System.getProperties()得到的內容。微服務

5 操做系統的環境變量 。測試

6 經過random.*配置的隨機屬性。 spa

7 位於當前應用 jar 包以外, 針對不一樣{profile}環境的配置文件內容, 例如application-{profile}.properties或是YAML定義的配置文件。操作系統

8 位於當前應用 jar 包以內 , 針對不一樣{profile}環境的配置文件內容,例如application-{profile}.properties或是YAML定義的配置文件。命令行

9 位於當前應用jar包以外的application.properties和YAML配置內容。

10位於當前應用jar包以內的app口ca巨on.properties和YAL配置內容。

11在@Configura巨on註解修改的類中,經過@PropertySource註解定義的屬性。

12應用默認屬性,使用SpringApplication.setDefaultProper巨es 定義的內容。

優先級按上面的順序由高到低, 數字越小優先級越高。

能夠看到,其中第7項和第9項 都是從應用jar包以外讀取配置文件,因此,實現外部化配置的原理就是今後切入,爲其指定外部配置文件的加載位置來取代jar包以內的配置內容。 經過這樣的實現,咱們的工程在配置中就變得很是乾淨,只需在本地放置開發須要的配置便可, 而不用關心其餘環境的配置,由其對應環境的負責人去維護便可。

 

參考文檔:

《SpringCloud微服務實踐》(翟永超)

相關文章
相關標籤/搜索