spring.profiles使用的方法步驟
本文來說下spring.profiles.active和spring.profiles.include的使用與區(qū)別
業(yè)務(wù)場景
我們在開發(fā)Spring Boot應(yīng)用時,通常同一套程序會被應(yīng)用和安裝到幾個不同的環(huán)境,比如:開發(fā)、測試、生產(chǎn)等。其中每個環(huán)境的數(shù)據(jù)庫地址、服務(wù)器端口等等配置都會不同,如果在為不同環(huán)境打包時都要頻繁修改配置文件的話,那必將是個非常繁瑣且容易發(fā)生錯誤的事。
對于多環(huán)境的配置,各種項目構(gòu)建工具或是框架的基本思路是一致的,通過配置多份不同環(huán)境的配置文件,再通過打包命令指定需要打包的內(nèi)容之后進行區(qū)分打包,Spring Boot也不例外,或者說更加簡單。
spring.profiles.active屬性
一個好方法就是創(chuàng)建不同的配置文件,且命名規(guī)則遵循application-${profile}.yml,例如:
- 開發(fā)環(huán)境配置文件:application-dev.yml
- 測試環(huán)境配置文件:application-test.yml
- 生產(chǎn)環(huán)境配置文件:application-prod.yml
當然,我們不能刪除項目最頂層的application.yml配置,在該文件中,根據(jù)部署場景不同,切換不同的配置文件:配置spring.profiles.active,屬性值為${profile}。
spring.profiles.active=dev:啟用application-dev.yml
spring.profiles.active=test:啟用application-test.yml
spring.profiles.active=prod:啟用application-prod.yml
啟動時指定
在執(zhí)行有參啟動時,可以在命令中進行指定要選用的配置文件,例如:java -jar xx.jar --spring.profiles.active=test
這個命令的優(yōu)先級是最高的,即使application.yml中已經(jīng)配置spring.profiles.active=dev,最終程序還是會用application-test.yml配置文件。
spring.profiles.include屬性
再進一步,對于開發(fā)環(huán)境,想用不同的配置文件存儲開發(fā)環(huán)境不同的配置,例如:
- application-dev1.yml中存儲jdbc信息
- application-dev2.yml中存儲ip、端口信息
即在啟用application-dev.yml開發(fā)環(huán)境(主)配置文件時,同時啟用application-dev1.yml和application-dev2.yml。
那么,可以使用spring.profiles.include屬性:同時啟用其他的profile
配置方法
若是properties文件:spring.profiles.include=dev1,dev2
若是yaml文件中,spring.profiles.include:
-dev1
-dev2
或者:spring.profiles.include:dev1,dev2
配置位置
- 配置方式一:application.properties中,配置spring.profiles.active=dev的同時指定spring.profiles.include=dev1,dev2
- 配置方式二:application.properties中,配置spring.profiles.active=dev,application-dev.properties中,配置spring.profiles.include=dev1,dev2。使用application-dev.properties時自動就激活了dev1、dev2兩個文件,不用再次指定。(個人認為第二種方法更好)
配置區(qū)別
- 第一種方式啟動時,控制臺打印The following profiles are active:dev1,dev2,dev
- 第二種方式啟動時,控制臺打印The following profiles are active:dev, dev1,dev2
按照順序,后面的覆蓋前面的。
用示例來使用和區(qū)分
application.yml配置:
server:
port: 8088
#激活的是開發(fā)環(huán)境配置文件
spring:
profiles:
active: devapplication-dev.yml配置:
server:
port: 8089
#同時觸發(fā)dev1和dev2的激活
spring:
profiles:
include: dev1,dev2application-dev1.yml配置:
server: port: 8090
application-dev2.yml配置:
server: port: 8091
application-prod.yml配置:
server:
port: 9088
#同時觸發(fā)prod1和prod2的激活
spring:
profiles:
include: prod1,prod2application-prod1.yml配置:
server: port: 9089
application-prod2.yml配置:
server: port: 9090
測試一
在application.yml配置文件中,指定
#激活的是開發(fā)環(huán)境配置文件
spring:
profiles:
active: dev啟動時不指定參數(shù)

啟動dev2中的8091端口

測試二
在測試一的基礎(chǔ)上,啟動時指定參數(shù):–spring.profiles.active=prod。優(yōu)先級最高,會使用生產(chǎn)環(huán)境配置文件

啟動結(jié)果

測試三
在application.yml配置文件中,指定
#激活的是開發(fā)環(huán)境配置文件
spring:
profiles:
active: dev
include: dev1,dev2啟動結(jié)果

編寫程序查看激活的yml文件
編寫程序查看激活的yml文件
package com.wideth;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@Slf4j
@SpringBootApplication
public class AppApplication {
public static void main(String[] args) {
try {
ApplicationContext ctx = SpringApplication.run
(AppApplication.class, args);
String[] activeProfiles = ctx.getEnvironment().
getActiveProfiles();
for (String profile : activeProfiles) {
log.warn("Spring Boot 使用profile為:{}" , profile);
}
} catch (Exception e) {
log.error("啟動失?。?,e);
}
}
}程序結(jié)果

本文小結(jié)
到此這篇關(guān)于spring.profiles使用的方法步驟的文章就介紹到這了,更多相關(guān)spring.profiles使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于SpringBoot實現(xiàn)自動裝配返回屬性的設(shè)計思路
這篇文章主要介紹了基于SpringBoot實現(xiàn)自動裝配返回屬性,這里涉及到的技術(shù)知識點有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧2022-03-03
在navicat中導入mysql數(shù)據(jù)庫詳細步驟(即.sql后綴的數(shù)據(jù)庫)
Navicat是MySQL非常好用的可視化管理工具,功能非常強大,能滿足我們?nèi)粘?shù)據(jù)庫開發(fā)的所有需求,下面這篇文章主要給大家介紹了關(guān)于如何在navicat中導入mysql數(shù)據(jù)庫(即.sql后綴的數(shù)據(jù)庫)的相關(guān)資料,需要的朋友可以參考下2023-04-04
SpringCloud配置客戶端ConfigClient接入服務(wù)端
這篇文章主要為大家介紹了SpringCloud配置客戶端ConfigClient接入服務(wù)端,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
Spring Boot中使用JSR-303實現(xiàn)請求參數(shù)校驗
這篇文章主要介紹了Spring Boot中使用JSR-303實現(xiàn)請求參數(shù)校驗,JSR-303校驗我們一般都是對Java的實體類對象進行校驗,主要檢驗JSR-303是Java中的一個規(guī)范,用于實現(xiàn)請求參數(shù)校驗在我們的實體類對象的屬性上,感興趣的朋友跟隨小編一起看看吧2023-10-10
Java中如何利用Set判斷List集合中是否有重復(fù)元素
在開發(fā)工作中,我們有時需要去判斷List集合中是否含有重復(fù)的元素,這時候我們不需要找出重復(fù)的元素,我們只需要返回一個?Boolean?類型就可以了,下面通過本文給大家介紹Java中利用Set判斷List集合中是否有重復(fù)元素,需要的朋友可以參考下2023-05-05
詳解Spring-Cloud2.0之Feign調(diào)用遠程服務(wù)指南
這篇文章主要介紹了詳解Spring-Cloud2.0之Feign調(diào)用遠程服務(wù)指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

