一 、默認配置文件目錄
spring boot 啟動會掃描以下位置的application.properties 或者application.yml文件作為spring boot 的默認配置文件 ,加載的優先由上到下,加載的時候,會把以下路勁的文件都加載一遍。不同的配置內容會全部加載到系統,對於重復的配置內容,優先級別高的配置文件內容會覆蓋優先級別低的配置文件內容。
路勁 | 說明 |
file:./config/ | 工程文件夾下的config目錄。 |
file:/ | 工程文件夾目錄,如果是maven項目那么和pom.xml是一個層級 |
classPath:/config/ | 工程 classPath文件夾下的config文件夾 |
classPath:/ | 工程classpath文件夾 |
除了上述的文件目錄以外,還可以用spring.config.location 參數的形式指定配置文件 :java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties ,如果上述的默認路勁有配置文件的話,會和配置內容會形成互補作用,相同的內容優先級別高的會覆蓋優先級別低的。
二、外部配置
有時候工程已經打成jar了 ,想修改系統的配置,SpringBoot也可以從jar包外面設置參數,加載配置; 以下設置優先級從高到低;高優先級的配置覆蓋低優先級的配置,所有的配置會 形成互補配置
1.命令行參數
所有的配置都可以在命令行上進行指定 ,多個配置用空格分開; --配置項=值
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
2.來自java:comp/env的JNDI屬性
3.Java系統屬性(System.getProperties())
4.操作系統環境變量
5.RandomValuePropertySource配置的random.*屬性值
在工程jar包的層級目錄下建立配置文件如: 那么以參數的形式啟動工程:java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar ,加載配置文件,會按以下規則, 由jar包外向jar包內進行尋找;
優先加載帶profile
6.jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
7.jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
再來加載不帶profile
8.jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
9.jar包內部的application.properties或application.yml(不帶spring.profile)配置文件
10.@Configuration注解類上的@PropertySource
11.通過SpringApplication.setDefaultProperties指定的默認屬性
所有支持的配置加載來源;