01application.properties加載
Spring Boot啟動會掃描以下位置的application.properties或者application.yml文件作為Spring Boot的默認配置文件
file:/config/file:/classpath:/config/classpath:/以上順序按照優先級從高到低的順序,所有位置的文件都會被加載,高優先級的配置內容會覆蓋低優先級配置的內容,其中配置文件中的內容是互補配置,即
存在相同的配置內容,高優先級的內容會覆蓋低優先級的內容存在不同的內容的時候,高優先級和低優先級的配置內容取併集我們也可以通過spring.config.location來改變默認的配置,具體做法就是項目打包好以後,我們可以使用命令行參數的形式,啟動項目的時候來指定配置文件的新位置,指定配置文件和默認加載的配置文件共同起作用稱為互補配置
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties
02外部配置的加載順序
Spring Boot也可以從以下位置加載配置: 優先級從高到低順序,高優先級覆蓋低優先級,如有不同內容,高優先級和低優先級形成互補配置
命令行參數命令行參數的優先級是最高的,假定內部配置的最高優先級配置文件配置的啟動埠號是8081,啟動命令行參數如以下設置:
java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --server.port=8089
那麼啟動的埠就改成了8089,命令行可以把項目的所有的配置選項全部都改掉
來自java:comp/env的JNDI屬性java系統屬性(System.getProperties())作業系統環境變量RandomValuePropertySource配置的random.*屬性值jar包外部的application-{profile}.properties或者application.yml(帶spring.profile)配置文件jar包內部的application-{profile}.properties或者application.yml(帶spring.profile)配置文件jar包外部的application.properties或者application.yml(不帶spring.profile)配置文件jar包內部的application.properties或者application.yml(不帶spring.profile)配置文件@Configuration註解類上的@PropertySource通過SpringApplication.setDefaultProperties指定的默認屬性看了以上的配置順序,下面來思考一個問題,如果我要配置的東西太多,而且項目已經打包,我命令行重新配置參數太麻煩,應該怎麼辦?