SpringBoot提供了外部分配置功能格侯,可以使用屬性文件(properties)路克、YAML(yml)文件、環(huán)境變量和命令行參數(shù)來進(jìn)行處部參數(shù)配置养交,并t以特定的順序來處理配置精算,以便于允許合理的覆蓋值。
本章節(jié)中碎连,主要解析SpringBoot對屬性文件(properties)和YAML(yml)文件的加載順序和屬性優(yōu)化級
Note: SpringBoot中的配置加載順序與其屬性優(yōu)先級是相反的灰羽,每多時候,我們說的加載順序鱼辙,不是屬性優(yōu)先級廉嚼。超先加載的配置文件則屬性優(yōu)先級越低。
我們需要先帶著這種思路來進(jìn)行下面的閱讀倒戏。
配置文件目錄與屬性優(yōu)化級
1. A /config subdirectory of the current directory.
位于與jar包同級目錄下的config文件夾怠噪,也就是當(dāng)前目錄下的/config子文件夾下配置
2. The current directory
位于與jar包同級目錄下(jar包當(dāng)前目錄)
3. A classpath /config package
classpath下的config目錄,如idea環(huán)境下杜跷,resource文件夾下的config文件夾傍念,編譯之后就是classpath下的config文件夾下配置
4. The classpath root
classpath根目錄,如idea環(huán)境下葛闷,resource文件夾下配置
上文所標(biāo)識的順序中憋槐,表示的是屬性的優(yōu)化先級。也就是說淑趾,加載的順序與其相反阳仔,從4開始加載。
如圖所示中的序列扣泊,表示的是配置文件的加載序順近范。加載順序正好與可放置目錄中的序順相反。
加載1. classpath:/ -- 優(yōu)先級4. The classpath root
加載2. classpath:/config/ -- 優(yōu)先級3. A classpath /config package
加載3. file:./ -- 優(yōu)先級2. The current directory
加載4. file:./config/ -- 優(yōu)先級1. A /config subdirectory of the current directory.
application與bootstrap
bootstrap優(yōu)先于application加載延蟹, 用于應(yīng)用程序上下文的引導(dǎo)階段评矩。由spring cloud BootstrapApplicationListener在ApplicationEnvironmentPreparedEvent時進(jìn)行加載。
可以將bootstrap配置理解為系統(tǒng)級別的參數(shù)配置等孵,這些參數(shù)一般不會變更稚照。
application配置可以理解為定義應(yīng)用級別的參數(shù),可以覆蓋替換bootstrap的配置信息俯萌。
也就是說application的屬性優(yōu)先較高果录,加載時先加載bootstrap配置文件,再加載application配置文件咐熙。
properties與yml
properties的配置文件屬性優(yōu)先高于yml配置弱恒,yml配置文件優(yōu)先于propertes配置文件加載