SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的方法
前言
在公司真正的開發(fā)和生產(chǎn)中,同一套程序會(huì)被部署到幾個(gè)不同的環(huán)境,比如:開發(fā)、測試、生產(chǎn)等。其中每個(gè)環(huán)境的數(shù)據(jù)庫地址、服務(wù)器端口等等配置都會(huì)不同,這樣通過多個(gè)配置文件就做到了隔離,多個(gè)環(huán)境之間不會(huì)相互影響。但是這么多配置文件,項(xiàng)目啟動(dòng)時(shí)SpringBoot如何確定加載哪一個(gè)呢?
1.SpringBoot中實(shí)現(xiàn)多環(huán)境切換
在SpringBoot中,除了application.properties,我們新建的其他配置文件的文件名需要滿足application-{profile}.properties的格式,其中{profile}對(duì)應(yīng)你的環(huán)境標(biāo)識(shí)(不一定是.properties文件,也可以是.yml)其對(duì)應(yīng)的{profile}值是開發(fā)者自定義的(如dev,product),在項(xiàng)目啟動(dòng)的時(shí)候,只需要添加對(duì)應(yīng)的參數(shù),springboot就會(huì)去讀取該配置文件了。具體profile的配置在application.properties文件中通過spring.profiles.active屬性來設(shè)置。接下來我們以一個(gè)例子來說明
(1)首先這里創(chuàng)建了dev、product、qa、stage和默認(rèn)的application五個(gè)配置文件

(2)加載配置文件時(shí)會(huì)先加載application.properties配置文件(這里一般存放一些公共配置),在該文件中配置要加載的環(huán)境的配置文件,這里有兩種配置方法。
例如要加載dev環(huán)境,可以在application.properties中這樣配置
spring.profiles.active=dev
或者使用@spring.profiles.active@,如下所示
spring.profiles.active=@spring.profiles.active@
如果使用這種方式則需要在pom.xml中添加以下內(nèi)容,其中activeByDefault標(biāo)簽來指定項(xiàng)目啟動(dòng)時(shí)默認(rèn)加載的配置文件。
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
</profile>
<profile>
<id>qa</id>
<properties>
<spring.profiles.active>qa</spring.profiles.active>
</properties>
</profile>
<profile>
<id>stage</id>
<properties>
<spring.profiles.active>stage</spring.profiles.active>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<spring.profiles.active>product</spring.profiles.active>
</properties>
</profile>
</profiles>
當(dāng)執(zhí)行mvn clean package -P dev 命令對(duì)項(xiàng)目進(jìn)行打包發(fā)布時(shí),打出來的jar/war包中的配置文件中@spring.profiles.active@ 會(huì)被替換成 dev。
注意
@spring.profiles.active@要與pom中的標(biāo)簽<spring.profiles.active>> 保持一致,否則會(huì)報(bào)錯(cuò)。

2.SpringBoot中配置文件加載順序
配置文件的優(yōu)先級(jí)排序(以哪個(gè)配置文件為準(zhǔn)):
1、項(xiàng)目根目錄下的config目錄。【優(yōu)先級(jí)最高】
2、項(xiàng)目根目錄。
3、classpath下的config目錄。
4、classpath目錄(新建項(xiàng)目時(shí)application.properties默認(rèn)所在位置)?!緝?yōu)先級(jí)最低】
配置文件加載順序和優(yōu)先級(jí)順序相反,優(yōu)先級(jí)低的先加載,因?yàn)槿绻兄貜?fù)的配置,先加載的配置文件會(huì)被覆蓋。
同一級(jí)目錄下,如果是application.yml,application.properties配置文件同時(shí)存在,會(huì)以application.properties配置文件為準(zhǔn),也就是說先加載.yml文件后加載.properties文件。

優(yōu)先級(jí)順序:1->2->3->4->5。
文件加載順序:5->4->3->2->1。
到此這篇關(guān)于SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的文章就介紹到這了,更多相關(guān)SpringBoot加載多個(gè)配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud微服務(wù)網(wǎng)關(guān)限流方式
這篇文章主要介紹了SpringCloud微服務(wù)網(wǎng)關(guān)限流方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
SpringBoot替換默認(rèn)的tomcat服務(wù)器的方法
Tomcat是Apache基金下的一個(gè)輕量級(jí)的Servlet容器,支持Servlet和JSP,Tomcat具有Web服務(wù)器特有的功能,在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認(rèn)的容器技術(shù),本文給大家介紹了Spring?Boot如何替換默認(rèn)的tomcat服務(wù)器,需要的朋友可以參考下2024-08-08
Mybatis Criteria使用and和or進(jìn)行聯(lián)合條件查詢的操作方法
這篇文章主要介紹了Mybatis Criteria的and和or進(jìn)行聯(lián)合條件查詢的方法,本文通過例子給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
這一次搞懂Spring代理創(chuàng)建及AOP鏈?zhǔn)秸{(diào)用過程操作
這篇文章主要介紹了這一次搞懂Spring代理創(chuàng)建及AOP鏈?zhǔn)秸{(diào)用過程操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存管理功能
本篇文章主要介紹spring boot緩存管理機(jī)制及相關(guān)概念,以及如何結(jié)合Redis實(shí)現(xiàn)緩存管理,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01
Java?swing實(shí)現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的訪問問題
這篇文章主要介紹了Java?swing實(shí)現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的訪問,本次實(shí)驗(yàn)需要做一個(gè)GUI界面和一個(gè)連接查詢功能,在論壇上借鑒了其他大佬獲取網(wǎng)站內(nèi)容的部分代碼,然后自己做了一個(gè)及其簡陋的swing界面,算是把這個(gè)實(shí)驗(yàn)完成了,需要的朋友可以參考下2022-09-09
Java實(shí)現(xiàn)簡單的遞歸操作方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)簡單的遞歸操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

