SpringBoot加載多個配置文件實現(xiàn)dev、product多環(huán)境切換的方法
前言
在公司真正的開發(fā)和生產(chǎn)中,同一套程序會被部署到幾個不同的環(huán)境,比如:開發(fā)、測試、生產(chǎn)等。其中每個環(huán)境的數(shù)據(jù)庫地址、服務(wù)器端口等等配置都會不同,這樣通過多個配置文件就做到了隔離,多個環(huán)境之間不會相互影響。但是這么多配置文件,項目啟動時SpringBoot如何確定加載哪一個呢?
1.SpringBoot中實現(xiàn)多環(huán)境切換
在SpringBoot中,除了application.properties,我們新建的其他配置文件的文件名需要滿足application-{profile}.properties
的格式,其中{profile}
對應(yīng)你的環(huán)境標識(不一定是.properties文件,也可以是.yml)其對應(yīng)的{profile}
值是開發(fā)者自定義的(如dev,product),在項目啟動的時候,只需要添加對應(yīng)的參數(shù),springboot就會去讀取該配置文件了。具體profile的配置在application.properties
文件中通過spring.profiles.active
屬性來設(shè)置。接下來我們以一個例子來說明
(1)首先這里創(chuàng)建了dev、product、qa、stage和默認的application五個配置文件
(2)加載配置文件時會先加載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
標簽來指定項目啟動時默認加載的配置文件。
<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 命令對項目進行打包發(fā)布時,打出來的jar/war包中的配置文件中@spring.profiles.active@ 會被替換成 dev。
注意
@spring.profiles.active@
要與pom中的標簽<spring.profiles.active>
> 保持一致,否則會報錯。
2.SpringBoot中配置文件加載順序
配置文件的優(yōu)先級排序(以哪個配置文件為準):
1、項目根目錄下的config目錄。【優(yōu)先級最高】
2、項目根目錄。
3、classpath下的config目錄。
4、classpath目錄(新建項目時application.properties默認所在位置)?!緝?yōu)先級最低】
配置文件加載順序和優(yōu)先級順序相反,優(yōu)先級低的先加載,因為如果有重復(fù)的配置,先加載的配置文件會被覆蓋。
同一級目錄下,如果是application.yml
,application.properties
配置文件同時存在,會以application.properties配置文件為準,也就是說先加載.yml文件后加載.properties文件。
優(yōu)先級順序:1->2->3->4->5。
文件加載順序:5->4->3->2->1。
到此這篇關(guān)于SpringBoot加載多個配置文件實現(xiàn)dev、product多環(huán)境切換的文章就介紹到這了,更多相關(guān)SpringBoot加載多個配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring事件發(fā)布監(jiān)聽,順序監(jiān)聽,異步監(jiān)聽方式
這篇文章主要介紹了Spring事件發(fā)布監(jiān)聽,順序監(jiān)聽,異步監(jiān)聽方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12一文學(xué)習(xí)Java NIO的ByteBuffer工作原理
很多網(wǎng)友說JDK又在寫B(tài)ug!下面通過通過本文學(xué)習(xí)下為何Java NIO的ByteBuffer這么垃圾,涉及到ByteBuf API 的優(yōu)點及工作原理解析,感興趣的朋友跟隨小編一起看看吧2021-05-05IDEA 中使用 ECJ 編譯出現(xiàn) java.lang.IllegalArgumentException的錯誤問題
這篇文章主要介紹了IDEA 中使用 ECJ 編譯出現(xiàn) java.lang.IllegalArgumentException問題 ,本文內(nèi)容簡短給大家介紹的好,需要的朋友可以參考下2020-05-05在Springboot中Mybatis與Mybatis-plus的區(qū)別詳解
MyBatis是一個優(yōu)秀的持久層框架,它對JDBC的操作數(shù)據(jù)庫的過程進行封裝,MyBatisPlus (簡稱 MP)是一個 MyBatis的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,本文將給大家介紹了在Springboot中Mybatis與Mybatis-plus的區(qū)別2023-12-12深入探究Java線程的創(chuàng)建與構(gòu)造方法
這篇文章主要給大家分享的是java線程的創(chuàng)建以及構(gòu)造方法,想了解具體方式的小伙伴可以參考下面文章內(nèi)容,希望對你有所幫助2022-04-04