SpringBoot也可以從以下位置加載配置; 優(yōu)先級從高到低;高優(yōu)先級的配置覆蓋低優(yōu)先級的配置,所有的配置會 形成互補配置?
1.命令行參數(shù) 所有的配置都可以在命令行上進行指定 例:
?java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc 多個配置用空格分開;
格式: --配置項=值??
命令行參數(shù)是優(yōu)先級最高的。
?
2.來自java:comp / env的JNDI屬性
?
3.Java系統(tǒng)屬性(System.getProperties())
?
4.操作系統(tǒng)環(huán)境變量
?
5.RandomValuePropertySource配置的random.*屬性值
?
由jar包外?向 jar包內(nèi)進行尋找; 優(yōu)先加載帶profile 【外包內(nèi)包其實就是resouce目錄下 相同的配置名 其次看位置 越外的即是外包】
?
6.jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
7.jar包內(nèi)部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
?
其次來加載不帶profile
?
8.jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
9.jar包內(nèi)部的application.properties或application.yml(不帶spring.profile)配置文件
?
10.@Configuration注解類上的@PropertySource
?
11.通過SpringApplication.setDefaultProperties指定的默認屬性
?
?
其實就是說? :
配置文件都會先執(zhí)行不帶porfile的【即默認】
然之后: 按照 優(yōu)先級 進行執(zhí)行【多個帶profile 配置文件?它們的是同一個級別的,只能用?spring:? profiles:? ? active:? 配置?執(zhí)行一個生效】,然后高優(yōu)先級的配置文件 一直往下 覆蓋低優(yōu)先級的配置文件。
?優(yōu)先級就是上面列出的點了.
作者:??咸瑜???
本文摘自 :https://blog.51cto.com/u