在《Spring Boot 2.4 對(duì)多環(huán)境配置的支持更改》一文中,我們講解了Spring Boot 2.4版本對(duì)多環(huán)境配置的配置變化。除此之外,還有一些其他配置變化,今天我們就繼續(xù)講講其他的內(nèi)容!
spring.profiles.include
對(duì)于這個(gè)配置項(xiàng),你是否熟悉呢?從字面意思也不難理解,應(yīng)該就是用來(lái)引入一些其他配置的配置(因?yàn)橛袀€(gè)include嘛),實(shí)際作用也確實(shí)如此!
當(dāng)我們的應(yīng)用有很多配置信息的時(shí)候,比如當(dāng)用到了很多中間件MySQL、Redis、MQ等,每個(gè)中間件的配置都是一大串的,那么這個(gè)時(shí)候我們?yōu)榱伺渲酶?jiǎn)潔一些,可能就會(huì)對(duì)其做分組。
如果你有用過(guò)這樣的配置方式,那么在升級(jí)2.4版本的時(shí)候一定要注意,因?yàn)樵瓉?lái)的配置方法會(huì)失效!
2.4之前的分組配置
先來(lái)看看2.4版本之前的分組配置,我們用下面這個(gè)例子來(lái)介紹:
spring:
profiles:
active: "dev"
---
spring.profiles: "dev"
spring.profiles.include: "dev-db,dev-mq"
---
spring.profiles: "dev-db"
db: dev-db.didispace.com
---
spring.profiles: "dev-mq"
mq: dev-mq.didispace.com
其中:
- 第一個(gè)
spring.profiles.active: dev
,代表默認(rèn)激活dev
配置 - 第二段
dev
配置中使用了spring.profiles.include
來(lái)引入其他配置信息,這里模擬一下一個(gè)是dev的db配置,一個(gè)是dev的mq配置。在2.3和之前版本的時(shí)候,我們通常就是這樣來(lái)分組配置不同中間件的。
spring.profiles: "dev"
spring.profiles.include: "dev-db,dev-mq"
通過(guò)修改spring boot版本到2.3,不出意外,你可以在啟動(dòng)日志開(kāi)頭,看到激活的配置信息如下:
The following profiles are active: dev,dev-db,dev-mq
同時(shí)激活了dev、dev-db、dev-mq三組配置,include是生效的。
2.4的分組配置
在升級(jí)spring boot到2.4之后,再啟動(dòng)之前的應(yīng)用,你會(huì)發(fā)現(xiàn)配置就沒(méi)有生效了,這里不僅是因?yàn)?span style="background-color: rgba(127, 127, 127, 0.12);">spring.profiles
失效的原因,即使我們將其都修改為spring.config.activate.on-profile
,也依然無(wú)法激活dev-db和dev-mq的配置。因?yàn)樵?.4版本之后,我們需要使用spring.profiles.group來(lái)配置了,同時(shí)組織結(jié)構(gòu)也發(fā)生了變化。
可以嘗試把配置修改成如下格式:
spring:
profiles:
active: "dev"
group:
"dev": "dev-db,dev-mq"
"prod": "prod-db,prod-mq"
---
spring:
config:
activate:
on-profile: "dev-db"
db: dev-db.didispace.com
---
spring:
config:
activate:
on-profile: "dev-mq"
mq: dev-mq.didispace.com
---
spring:
config:
activate:
on-profile: "prod-db"
db: prod-db.didispace.com
---
spring:
config:
activate:
on-profile: "prod-mq"
mq: prod-mq.didispace.com
啟動(dòng)應(yīng)用可以在日志開(kāi)頭看到激活的配置組(默認(rèn)激活的是dev,所以對(duì)應(yīng)的就是dev-db和dev-mq):
The following profiles are active: dev,dev-db,dev-mq
修改spring.profiles.active: "prod"
直接切換到另外一個(gè)環(huán)境。
重啟應(yīng)用可以在日志開(kāi)頭看到激活的配置組:
The following profiles are active: prod,prod-db,prod-mq
可以看到,在2.4版本的配置中,不同環(huán)境的配置定義都在第一段默認(rèn)配置中了,所有的環(huán)境定義都轉(zhuǎn)移到了spring.profiles.group
的key字段(上面配置了dev
和prod
),value字段則代表了每個(gè)環(huán)境需要加載的不同配置分組。
回憶一下我們?cè)?a href="http://therapist.net.cn/ask/thread/52280" target="_blank">《Spring Boot 2.4 對(duì)多環(huán)境配置的支持更改》open in new window中提到的多環(huán)境配置,是不是不同環(huán)境的配置標(biāo)識(shí)都集中定義在了每個(gè)spring.config.activate.on-profile
里。而這次分組的配置改變,讓激活配置、環(huán)境配置集中到了默認(rèn)配置里,其他的profile定義是環(huán)境+配置分組的組合內(nèi)容。
對(duì)于這樣的調(diào)整,最直觀的感受就是選擇環(huán)境的時(shí)候,我不需要往下找有哪些profile就能知道有哪些可選項(xiàng)了,還是方便不少。
注:本文轉(zhuǎn)載自“程序猿DD”,如有侵權(quán),請(qǐng)聯(lián)系刪除!