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

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

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

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包之內的app口ca巨on.properties和YAL配置內容。

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

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

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

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

 

參考文檔:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章