Spring Boot 所提供的配置優(yōu)先級順序比較復(fù)雜熏版。如果Spring Boot在優(yōu)先級更高的位置找到了配置器一,那么它就會(huì)無視優(yōu)先級低的配置霉晕。按照優(yōu)先級從高到低的順序较店,具體的列表如下所示:
-
命令行參數(shù)笼痛。
SpringApplication 類默認(rèn)會(huì)把以“--”開頭的命令行參數(shù)轉(zhuǎn)化成應(yīng)用中可以使用的配置參數(shù)裙秋,如 “--name=Alex” 會(huì)設(shè)置配置參數(shù) “name” 的值為 “Alex”。如果不需要這個(gè)功能缨伊,可以通過 “SpringApplication.setAddCommandLineProperties(false)” 禁用解析命令行參數(shù)
通過 System.getProperties() 獲取的 Java 系統(tǒng)參數(shù)摘刑。
操作系統(tǒng)環(huán)境變量。
從 java:comp/env 得到的 JNDI 屬性刻坊。
通過 RandomValuePropertySource 生成的“random.*”屬性枷恕。
-
應(yīng)用 Jar 文件之外的屬性文件。(通過spring.config.location參數(shù))
啟動(dòng)Jar包的時(shí)候, 指定一個(gè)外部配置文件:
java -jar demo.jar --spring.config.location=/XXX/XXX.properties -
應(yīng)用 Jar 文件內(nèi)部的屬性文件谭胚。
SpringApplication 類會(huì)搜索并加載 application.properties 文件來獲取配置屬性值徐块。SpringApplication 類會(huì)在下面位置搜索該文件。
1-當(dāng)前目錄的“/config”子目錄灾而。
2-當(dāng)前目錄胡控。
3-classpath 中的“/config”包。
4-classpath
上面的順序也表示了該位置上包含的屬性文件的優(yōu)先級旁趟。優(yōu)先級按照從高到低的順序排列 -
在應(yīng)用配置 Java 類(包含“@Configuration”注解的 Java 類)中通過“@PropertySource”注解聲明的屬性文件昼激。
當(dāng)@PropertySource中配置了多個(gè)配置文件時(shí),后面的優(yōu)先級高于前面的轻庆。
通過“SpringApplication.setDefaultProperties”聲明的默認(rèn)屬性。
可以使用spring.profiles.active來指定profile敛劝,spring boot會(huì)讀取application-{profile}.properties中的配置項(xiàng)覆蓋application.properties中相同的配置項(xiàng)