javascript
【SpringBoot】 启动时,修改默认配置文件名称
前言
- spring boot version : 2.0.0.RELEASE
- maven version : 3.5.0
在不同的環(huán)境下,依賴的外部資源是不一樣的。比如,在windows上開發(fā),在linux下進(jìn)行測試時(shí),無法將開發(fā)環(huán)境和測試i環(huán)境構(gòu)造成一致的。
此時(shí),就需要兩個(gè)配置文件來解決此事。開發(fā)環(huán)境一個(gè)配置文件,測試環(huán)境一個(gè)配置文件。
方式1
使用 --spring.profiles.active=xxx。參考 Spring Boot Reference Guide : 24.4 Profile-specific Properties
- 步驟1:
先為開發(fā)環(huán)境和測試環(huán)境分別編寫配置文件,配置文件中保留不同之處。開發(fā)環(huán)境配置文件為:application-dev.properties;測試環(huán)境配置文件為:application-test.properties。
再將開發(fā)環(huán)境和測試環(huán)境中,相同的配置放到同一個(gè)配置文件(application.properties)中。 - 步驟2:
啟動時(shí),使用 --spring.profiles.active=xxx,指定不同的profile。
開發(fā)環(huán)境啟動時(shí),在命令行參數(shù)中提供spring.profiles.active=dev。例:mvn spring-boot:run -Dspring.profiles.active=dev
測試環(huán)境啟動時(shí),在命令行參數(shù)中提供spring.profiles.active=test。例:mvn spring-boot:run -Dspring.profiles.active=test
說明
- java 命令啟動時(shí),- -spring.profiles.active=dev,前面的“- -”很重要。
- mvn 命令啟動時(shí),-Dspring.profiles.active=dev,前面的“-D”很重要。
- spring.profiles.active=dev 時(shí),配置文件匹配順序:application-dev.properties、application.properties。
- 如果application-dev.properties中有的配置,則會以application-dev.properties的配置為準(zhǔn)。
- 如果application-dev.properties中沒有的配置,則會以application.properties的配置為準(zhǔn)。
方式2
使用 --spring.config.name=xxx。參考 Spring Boot Reference Guide :24.3 Application Property Files
- 步驟1:
先為開發(fā)環(huán)境和測試環(huán)境分別編寫配置文件,配置文件中保留不同之處。開發(fā)環(huán)境配置文件為:application-dev.properties;測試環(huán)境配置文件為:application-test.properties。 - 步驟2:
啟動時(shí),使用 --spring.config.name=xxx,指定配置文件名。
開發(fā)環(huán)境啟動時(shí),在命令行參數(shù)中提供spring.config.name=application-dev。例:mvn spring-boot:run -Dspring.config.name=application-dev
測試環(huán)境啟動時(shí),在命令行參數(shù)中提供spring.config.name=application-test。例:mvn spring-boot:run -Dspring.config.name=application-test
說明
- java 命令啟動時(shí),–spring.profiles.active=application-dev,前面的“–”很重要。
- mvn 命令啟動時(shí),-Dspring.profiles.active=application-dev,前面的“-D”很重要。
- 當(dāng)- -spring.config.name=application-dev 時(shí),配置文件匹配順序:application-dev.properties。
- 如果application-dev.properties中有的配置,則會以application-dev.properties的配置為準(zhǔn)。
- 如果application-dev.properties中沒有的配置,則為null。
方式3
使用 --spring.config.location=xxx。參考 Spring Boot Reference Guide :24.3 Application Property Files
同 --spring.config.name=xxx類似。但是,–spring.config.location=xxx可以連配置文件路徑一起修改,也可以指定多個(gè)配置文件。
例:mvn spring-boot:run -Dspring.config.location=classpath:/config/application-test2.properties,classpath:application-test1.properties
說明
- 指定多個(gè)配置文件時(shí),后給出的配置文件覆蓋先給出的配置文件。
如果application-test1.properties中有的配置,則會以application-test1.properties的配置為準(zhǔn)。 - 如果application-test1.properties中沒有的配置,但application-test2.properties中有的配置,則會以application-test2.properties的配置為準(zhǔn)。
- 如果application-test1.properties和application-test2.properties中都沒有的配置,則為null。
上述方法失效情況說明
- 當(dāng) spring-boot-devtools 起效時(shí),上述方法失效。
- 當(dāng) pom文件中包含spring-boot-devtools 時(shí),且以 mvn spring:boot 方式啟動時(shí),spring-boot-devtools 起效,上述方法失效。(可以使用個(gè)pom來解決,默認(rèn)的pom中,包含spring-boot-devtools ;另外一個(gè)pom中,如pom-test.xml,不包含spring-boot-devtools。用mvn -f pom-test.xml spring:boot啟動即可。)
- 當(dāng)pom文件中包含spring-boot-devtools 時(shí),且以 java -jar 方式啟動時(shí),spring-boot-devtools 自動失效,上述方法有效。
- 使用eclipse時(shí),有無spring-boot-devtools,上述方式都有失效。
總結(jié)
以上是生活随笔為你收集整理的【SpringBoot】 启动时,修改默认配置文件名称的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度 CTO 王海峰:文心一言用户规模已
- 下一篇: “git pull” 强制覆盖本地文件