一、不同環境使用不同配置文件
將application.yml文件拷貝三份,在文件末尾分別對應開發/生產/測試,dev/prod/test/文件夾,其中application.yml 中默認激活開發環境
修改不同配置文件的啟動端口,在application.yml文件中添加具體啟動的配置文件,可以看到不同的啟動端口,使用maven的打包命令,將項目打入jar包:
如果打包出錯,在xml中配置跳過test測試,進入到jar包目錄,使用java -jar 啟動項目
<!-- 跳打包test文件報錯--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin>
默認以開發環境8810端口啟動,可以在啟動時指定配置文件:
改用生產環境的配置文件:
java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
可以發現項目以8888端口啟動
二、在idea中配置啟動文件:
VM options設置啟動參數 -Dspring.profiles.active=prod
Program arguments設置 --spring.profiles.active=prod
Active Profile 設置 prod
需要注意的是,上面三種方式,選一種即可:
2、配置文件的優先級:
外部大於內部,特指大於泛指
下面帶有dev\prod\test特指的文件優先級更高
三、文件優先級說明
spring boot 啟動會掃描以下位置的application.properties或者application.yml文件作為Spring boot的默認配置文件
–file:./config/
–file:./
–classpath:/config/
–classpath:/
以上是按照優先級從高到低的順序,所有位置的文件都會被加載,高優先級配置內容會覆蓋低優先級配置內容。
SpringBoot會從這四個位置全部加載主配置文件,如果高優先級中配置文件屬性與低優先級配置文件不沖突的屬性,則會共同存在—互補配置。
我們也可以通過配置spring.config.location來改變默認配置
java -jar Xxx-version.jar --spring.config.location=D:/application.properties
配置加載順序
SpringBoot也可以從以下位置加載配置:優先級從高到低;高優先級的配置覆蓋低優先級的配置,所有的配置會形成互補配置。
- 命令行參數
- 來自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指定的默認屬性