springboot中spring.profiles.include的妙用分享
spring.profiles.include的妙用
我們有這樣的一個springboot項目。項目分為開發(fā)、測試、生產(chǎn)三個不同階段(環(huán)境),每個階段都會有db、ftp、redis等的不同配置信息。
我們可以使用spring.profiles.include來實現(xiàn)三種不同環(huán)境的一鍵切換。
項目總(入口)配置文件
bootstrap.yml ,內(nèi)容如下
spring.profiles.active: dev #dev、test、prod 三種配置可以在這里進(jìn)行一鍵切換,默認(rèn)激活 dev(開發(fā))環(huán)境配置
項目開發(fā)環(huán)境配置文件
application-dev.yml (開發(fā)環(huán)境入口配置)、application-devDb.yml 、application-devFtp.yml、application-devRedis.yml
application-dev.yml 中含有如下內(nèi)容
spring.profiles.include: devDb,devFtp,devRedis
項目測試環(huán)境配置文件
application-test.yml (測試環(huán)境入口配置)、application-testDb.yml 、application-testFtp.yml、application-testRedis.yml
application-test.yml 中含有如下內(nèi)容
spring.profiles.include: testDb,testFtp,testRedis
項目生產(chǎn)環(huán)境配置文件
application-prod.yml (生產(chǎn)環(huán)境入口配置)、application-prodDb.yml 、application-prodFtp.yml、application-prodRedis.yml
application-prod.yml 中含有如下內(nèi)容
spring.profiles.include: prodDb,prodFtp,prodRedis
spring.profiles.include 的作用是可以疊加激活新的profile ,這樣可以在總的項目配置(bootstrap.yml)中實現(xiàn)一鍵切換dev、test、prod三者不同環(huán)境, 即
切換為dev時,同時激活了dev、devDb、devFtp、devRedis 的profile
切換為test時,同時激活了test、testDb、testFtp、testRedis 的profile
切換為prod時,同時激活了prod、prodDb、prodFtp、prodRedis 的profile
另外: 在yml配置文件中配置List<String> 的值,可以采用 -子項 的方式,如 :
spring.profiles.include:
- 子項1
- 子項2
- 子項3
也可以采用 逗號分隔元素列表的方式,如:
spring.profiles.include: 子項1,子項2,子項3
spring.profiles.active 與spring.profiles.include
spring.profiles.active和spring.profiles.include區(qū)別
主要是語意上的區(qū)別,實際使用效果相同。
以上兩種,在創(chuàng)建不同的配置文件時,命名規(guī)則遵循 application-${profile}.properties,
spring.profiles.active
:根據(jù)部署場景不同,切換不同的配置文件:配置spring.profiles.active,屬性值為${profile}。spring.profiles.include
:可以用來無條件的添加生效的配置。
將特定的配置屬性添加到生效的配置中而不是替換它們。
【格式】: spring.profiles.include: 子項1,子項2,子項3
配置的位置和區(qū)別
配置方式一: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兩個文件,不用再次指定。(個人認(rèn)為第二種方法更好)
區(qū)別:
第一種方式啟動時,控制臺打印The following profiles are active:dev1,dev2,dev。
第二種方式啟動時,控制臺打印The following profiles are active:dev, dev1,dev2。
按照順序,后面的覆蓋前面的。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于紅黑樹插入操作原理及java實現(xiàn)方法(分享)
下面小編就為大家分享一篇基于紅黑樹插入操作原理及java實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12在ssm中使用ModelAndView跳轉(zhuǎn)頁面失效的解決
這篇文章主要介紹了在ssm中使用ModelAndView跳轉(zhuǎn)頁面失效的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05在Action中以Struts2的方式輸出JSON數(shù)據(jù)的實例
下面小編就為大家?guī)硪黄贏ction中以Struts2的方式輸出JSON數(shù)據(jù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11Java EasyExcel實現(xiàn)導(dǎo)出多sheet并設(shè)置單元格樣式
EasyExcel是一個基于Java的、快速、簡潔、解決大文件內(nèi)存溢出的Excel處理工具,下面我們就來學(xué)習(xí)一下EasyExcel如何實現(xiàn)導(dǎo)出多sheet并設(shè)置單元格樣式吧2023-11-11自動配置@EnableAutoConfiguration問題
這篇文章主要介紹了自動配置@EnableAutoConfiguration問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06MyBatis中resultMap和resultType的區(qū)別詳解
這篇文章主要介紹了MyBatis中resultMap和resultType的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07