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 三種配置可以在這里進行一鍵切換,默認激活 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兩個文件,不用再次指定。(個人認為第二種方法更好)
區(qū)別:
第一種方式啟動時,控制臺打印The following profiles are active:dev1,dev2,dev。
第二種方式啟動時,控制臺打印The following profiles are active:dev, dev1,dev2。
按照順序,后面的覆蓋前面的。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring實戰(zhàn)之使用ClassPathResource加載xml資源示例
這篇文章主要介紹了Spring實戰(zhàn)之使用ClassPathResource加載xml資源,結(jié)合實例形式分析了Spring使用ClassPathResource加載xml資源的具體實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-12-12
SpringBoot生產(chǎn)環(huán)境打包如何去除無用依賴
這篇文章主要介紹了SpringBoot生產(chǎn)環(huán)境打包如何去除無用依賴問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
Spring實戰(zhàn)之讓Bean獲取Spring容器操作示例
這篇文章主要介紹了Spring實戰(zhàn)之讓Bean獲取Spring容器操作,結(jié)合實例形式分析了Bean獲取Spring容器的相關(guān)原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下2019-11-11
Springcloud Stream消息驅(qū)動工具使用介紹
SpringCloud Stream由一個中間件中立的核組成,應(yīng)用通過SpringCloud Stream插入的input(相當于消費者consumer,它是從隊列中接收消息的)和output(相當于生產(chǎn)者producer,它是發(fā)送消息到隊列中的)通道與外界交流2022-09-09
Java中報錯org.springframework.jdbc.UncategorizedSQLException的多種
本文主要介紹了Java中報錯org.springframework.jdbc.UncategorizedSQLException的多種解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06

