1. 程式人生 > >Spring Boot啟動時動態切換每個環境的配置檔案

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種之下。