javascript
SpringBoot中各配置文件的优先级及加载顺序
我們?cè)趯懗绦虻臅r(shí)候會(huì)碰到各種環(huán)境(開發(fā)、測(cè)試、生產(chǎn)),因而,在我們切換環(huán)境的時(shí)候,我們需要手工切換配置文件的內(nèi)容。這大大的加大了運(yùn)維人員的負(fù)擔(dān),同時(shí)會(huì)帶來一定的安全隱患。
為此,為了能更合理地重寫各屬性的值,SpringBoot通過對(duì)數(shù)據(jù)文件的優(yōu)先級(jí)進(jìn)行定義,定義了不同的加載順序,從而解決了這個(gè)問題。
1 在命令行中傳入的參數(shù)。
2. SPRING APPLICATION JSON中的屬性。 SPRING_APPLICATION—JSON是以JSON格式配置在系統(tǒng)環(huán)境變量中的內(nèi)容。
3. java:comp/env中的JNDI 屬性。
4. Java的系統(tǒng)屬性, 可以通過System.getProperties()獲得的內(nèi)容。
5 操作系統(tǒng)的環(huán)境變量 。
6 通過random.*配置的隨機(jī)屬性。
7 位于當(dāng)前應(yīng)用 jar 包之外, 針對(duì)不同{profile}環(huán)境的配置文件內(nèi)容, 例如application-{profile}.properties或是YAML定義的配置文件。
8 位于當(dāng)前應(yīng)用 jar 包之內(nèi) , 針對(duì)不同{profile}環(huán)境的配置文件內(nèi)容,例如application-{profile}.properties或是YAML定義的配置文件。
9 位于當(dāng)前應(yīng)用jar包之外的application.properties和YAML配置內(nèi)容。
10位于當(dāng)前應(yīng)用jar包之內(nèi)的app口ca巨on.properties和YAL配置內(nèi)容。
11在@Configura巨on注解修改的類中,通過@PropertySource注解定義的屬性。
12應(yīng)用默認(rèn)屬性,使用SpringApplication.setDefaultProper巨es 定義的內(nèi)容。
優(yōu)先級(jí)按上面的順序由高到低, 數(shù)字越小優(yōu)先級(jí)越高。
可以看到,其中第7項(xiàng)和第9項(xiàng) 都是從應(yīng)用jar包之外讀取配置文件,所以,實(shí)現(xiàn)外部化配置的原理就是從此切入,為其指定外部配置文件的加載位置來取代jar包之內(nèi)的配置內(nèi)容。 通過這樣的實(shí)現(xiàn),我們的工程在配置中就變得非常干凈,只需在本地放置開發(fā)需要的配置即可, 而不用關(guān)心其他環(huán)境的配置,由其對(duì)應(yīng)環(huán)境的負(fù)責(zé)人去維護(hù)即可。
?
參考文檔:
《SpringCloud微服務(wù)實(shí)踐》(翟永超)
?
轉(zhuǎn)載于:https://www.cnblogs.com/gudi/p/8878779.html
總結(jié)
以上是生活随笔為你收集整理的SpringBoot中各配置文件的优先级及加载顺序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驻马店治疗输卵管伞端粘连最好的医院推荐
- 下一篇: [JS 分析] 天_眼_查 字体文件