springboot的多環境的配置
- 多環境的配置
- 執行個體示範
- 通用的多環境配置方式
- 個人總結和使用場景
多環境的配置
定義一個擷取配置檔案的方法,讓環境變量決定調用哪個配置檔案 :
- 核心思想: 定義一個私有方法,讀取環境變量裡的一個自定義屬性,讓這個屬性決定伺服器調用哪個配置檔案,進而達到無需修改代碼和配置檔案就可以實作調用不同配置檔案的目的;
- 基本組成:環境變量、tomcat啟動入口、指令和jar包運作入口、配置檔案選擇器和配置檔案;
- 優點:伺服器調用不同的配置檔案無需修改代碼和配置檔案,隻需要配置環境變量即可,一定程度上降低了開發難度;
執行個體示範
//啟動類的編寫
@SpringBootApplication
public class ServiceApplication extends SpringBootServletInitializer {
//伺服器配置檔案類型
private static final List<String> DEPLOY_ENV = Arrays.asList("develop","test","product");
//通過tomcat容器托管的伺服器入口,使用profiles方法來決定加載那一個配置檔案
@Override
protected SpringApplicationBUilder configure(SpringApplicationBuilder application){
return application.sources(ServiceApplication.class).profiles(getProfile());
}
//這個是通過指令或者打包成jar直接運作的入口,配置檔案選擇方式和上述一樣
public static void mian(String[] args){
new SpringApplicationBuilder()
.sources(ServiceApplication.class)
.profiles(getProfile())
.run(args);
}
//擷取設定的系統環境變量,然後決定加載那一個配置檔案
private static final String getProfile(){
Map<String,String> environment = System.getEnv();
String env = environment.get("PROFILE_OF_ENV");
String profile = (env!=null && DEPLOY_ENV.contains(env) ? env : "develop");
return profile;
}
}
application-dev.properties:開發環境
application-test.properties:測試環境
application-prod.properties:生産環境
具體調用哪個配置檔案,由 profiles() 方法決定,可以通過 getProfile() 方法讀取環境變量進行配置 。
//環境變量
變量名(N): PROFILE_OF_ENV
變量值(V): "develop"
通用的多環境配置方式
application-dev.properties:開發環境
application-test.properties:測試環境
application-prod.properties:生産環境
至于哪個具體的配置檔案會被加載,需要在application.properties檔案中通過spring.profiles.active屬性來設定,其值對應{profile}值。
如:spring.profiles.active=devlop就會加載application-develop.properties配置檔案内容 ,這種每次配置一個新的環境都需要對application.properties檔案進行修改,比較麻煩。
個人總結和使用場景
在後端開發中,應用程式在不同的環境可能會有不同的配置,例如資料庫連接配接、日志級别等,開發,測試,生産每個環境可能配置都不一緻。
個人覺得通過環境變量來決定調用哪個配置檔案比較友善,設定好後不需要對配置檔案進行修改。