Spring Boot啟動時動態切換每個環境的配置檔案
開發專案一般是開發環境,測試環境,和生產環境,例如:Spring Boot的application.properties配置如下
application-dev1.priperties相當於開發環境,以此類推,當你啟動Spring Boot時,切換每個環境的application.properties。由於有多種設定方法,這裡介紹四種:
1.將配置檔案設定為啟動引數
有以下兩種設定啟動引數的方法。
1.命令列引數
java -jar spring-boot-application-properties-sample-1.0.0.jar --spring.profiles.active=dev1
2.java系統引數
java -jar -Dspring.profiles.active=dev1 spring-boot-application-properties-sample-1.0.0.jar
命令列引數的優先順序大於java系統引數
java -jar -Dspring.profiles.active = dev1 spring-boot-application-properties-sample.jar --spring.profiles.active = dev2
這種的dev2生效,dev1被覆蓋
2.用OS環境變數進行配置檔案設定
Spring Boot在啟動時載入環境變數“SPRING_PROFILES_ACTIVE”並將其設定為配置檔案。因此,如果事先在OS環境變數中定義了“SPRING_PROFILES_ACTIVE”,則會採用此處定義的配置檔案。
windows
linux
export SPRING_PROFILES_ACTIVE=dev1
3.使用tomcat的JNDI進行配置檔案設定
把Spring Boot打成war包放在Tomcat中執行。
在Tomcat的context.xml中定義
<Context>
< Environment type = “java.lang.String” name = “spring.profiles.active” value = “dev2” / >
< / Context >
按照上面的定義,當Tomcat啟動時載入配置檔案dev2
4.將配置檔案設定為tomcat的startup.bat(sh)中的環境變數
如startup.bat(sh),catalina.bat(sh)等。
windows
set "SPRING_PROFILES_ACTIVE=dev2"
linux
export SPRING_PROFILES_ACTIVE=dev2
如果在context中設定了,這裡也設定了,context優先順序高。
如果你這些都不設定,可以在application.properties 中設定spring.profiles.active=dev1,打包的時候回載入dev1,但是這個的優先順序在上面說的4種之下。