springboot中spring.profiles.include的妙用


  我們有這樣的一個springboot項目。項目分為開發、測試、生產三個不同階段(環境),每個階段都會有db、ftp、redis等的不同配置信息。我們可以使用spring.profiles.include來實現三種不同環境的一鍵切換。

項目總(入口)配置文件:

bootstrap.yml  ,內容如下

spring.profiles.active:  dev  #dev、test、prod 三種配置可以在這里進行一鍵切換,默認激活 dev(開發)環境配置

項目開發環境配置文件:

application-dev.yml (開發環境入口配置)、application-devDb.yml 、application-devFtp.yml、application-devRedis.yml 

application-dev.yml 中含有如下內容

spring.profiles.include: devDb,devFtp,devRedis

項目測試環境配置文件:

application-test.yml (測試環境入口配置)、application-testDb.yml 、application-testFtp.yml、application-testRedis.yml 

 

application-test.yml 中含有如下內容

spring.profiles.include: testDb,testFtp,testRedis

項目生產環境配置文件:

application-prod.yml (生產環境入口配置)、application-prodDb.yml 、application-prodFtp.yml、application-prodRedis.yml 

application-prod.yml 中含有如下內容

spring.profiles.include: prodDb,prodFtp,prodRedis

spring.profiles.include 的作用是可以疊加激活新的profile ,這樣可以在總的項目配置(bootstrap.yml)中實現一鍵切換dev、test、prod三者不同環境, 即 

切換為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的區別

源引自:https://blog.csdn.net/happyblueice/article/details/86538843

application.properties文件內容

spring.profiles.active=test4
pring.profiles.include=test3,test5
version=1
name=Tom

application-test2.properties文件內容

pring.profiles.include=test3,test4
version=2

application-test3.properties文件內容

version=3
name=Allen

application-test4.properties文件內容

name=Jim

application-test5.properties

version=5
name=Ifty

 

無參啟動例如 
java -jar example.jar 
先加載application.properties文件
最終version=5,name=Jim

有參啟動例如
java -jar example.jar --spring.profiles.active=test2
先加載application-test2.properties文件,再加載application.properties文件
最終version=2,name=Ifty

總結:
多個配置文件中有同一個值,以下情況獲取值的效果:
1.啟動命令不帶--spring.profiles.active參數以application.properties首先啟動
按順序所有文件第一個配置的spring.profiles.active屬性中指定的最后一個文件中含有該屬性的值為准
如果所有文件都沒有spring.profiles.active,那么以pring.profiles.include配置的最后一個屬性文件中的值為准
2.啟動命令帶--spring.profiles.active參數以參數指定的屬性文件首先啟動
此情況,已命令指定的配置文件中的值為准,其他文件中再配置spring.profiles.active也不會生效,如果不存在值,那么會以pring.profiles.include指定的最后一個文件中的值為准

簡要說
啟動命令spring.profiles.active指定文件中的值 > 文件中spring.profiles.active指定的文件列表中最后一次出現的值 > 文件中spring.profiles.include指定的文件列表中最后一次出現的值

(注意:無論是否配置啟動命令參數指定文件,最后都會加載application.properties,它里邊配置的信息也很關鍵)

 

 

 

 

參考文章:

https://blog.csdn.net/jasnet_u/article/details/82995845

https://blog.csdn.net/happyblueice/article/details/86538843

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM