前几天在《Spring Boot 2.4 对多环境配置的反对更改》一文中,给大家解说了 Spring Boot 2.4 版本对多环境配置的配置变动。除此之外,还有一些其余配置变动,所以明天咱们就持续讲讲其余的更新内容!
spring.profiles.include
对于这个配置项,你是否相熟呢?从字面意思也不难理解,应该就是用来引入一些其余配置的配置(因为有个 include 嘛),理论作用也的确如此!
当咱们的利用有很多配置信息的时候,比方当用到了很多中间件 MySQL、Redis、MQ 等,每个中间件的配置都是一大串的,那么这个时候咱们为了配置更简洁一些,可能就会对其做分组。
如果你有用过这样的配置形式,那么在降级 2.4 版本的时候肯定要留神,因为原来的配置办法会生效!
2.4 之前的分组配置
先来看看 2.4 版本之前的分组配置,咱们用上面这个例子来介绍:
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
其中:
- 第一个
spring.profiles.active: dev
,代表默认激活dev
配置 - 第二段
dev
配置中应用了spring.profiles.include
来引入其余配置信息,这里模仿一下一个是 dev 的 db 配置,一个是 dev 的 mq 配置。在 2.3 和之前版本的时候,咱们通常就是这样来分组配置不同中间件的。
spring.profiles: "dev"
spring.profiles.include: "dev-db,dev-mq"
文末咱们提供一个样例工程,你能够通过批改 spring boot 版本到 2.3 和配置信息应用下面的样例,来启动利用看看这种配置成果。不出意外,你能够在启动日志结尾,看到激活的配置信息如下:
The following profiles are active: dev,dev-db,dev-mq
同时激活了 dev、dev-db、dev-mq 三组配置,include 是失效的。
2.4 的分组配置
在降级 spring boot 到 2.4 之后,再启动之前的利用,你会发现配置就没有失效了,这里不仅是因为 spring.profiles
生效的起因,即便咱们将其都批改为spring.config.activate.on-profile
,也仍然无奈激活 dev-db 和 dev-mq 的配置。因为在 2.4 版本之后,咱们须要应用 spring.profiles.group 来配置了,同时组织构造也产生了变动。
能够尝试把配置批改成如下格局:
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
启动利用能够在日志结尾看到激活的配置组(默认激活的是 dev,所以对应的就是 dev-db 和 dev-mq):
The following profiles are active: dev,dev-db,dev-mq
、批改 spring.profiles.active: "prod"
间接切换到另外一个环境。
重启利用能够在日志结尾看到激活的配置组:
The following profiles are active: prod,prod-db,prod-mq
能够看到,在 2.4 版本的配置中,不同环境的配置定义都在第一段默认配置中了,所有的环境定义都转移到了 spring.profiles.group
的 key 字段(下面配置了 dev
和prod
),value 字段则代表了每个环境须要加载的不同配置分组。
回顾一下咱们在《Spring Boot 2.4 对多环境配置的反对更改》中提到的多环境配置,是不是不同环境的配置标识都集中定义在了每个 spring.config.activate.on-profile
里。而这次分组的配置扭转,让激活配置、环境配置集中到了默认配置里,其余的 profile 定义是环境 + 配置分组的组合内容。
对于这样的调整,最直观的感触就是抉择环境的时候,我不须要往下找有哪些 profile 就能晓得有哪些可选项了,还是不便不少。那么你对这样的配置调整怎么看呢?欢送留言探讨!
代码示例
本文的相干例子能够查看上面仓库中的 chapter1-3
目录:
- Github:https://github.com/dyc87112/SpringBoot-Learning/
- Gitee:https://gitee.com/didispace/SpringBoot-Learning/
如果您感觉本文不错,欢送 Star 反对,您的关注是我保持的能源!
相干浏览
- Spring Boot 1.x:属性配置文件详解
- Spring Boot 2.0:配置绑定 2.0 全解析
- Spring Boot 2.x 基础教程:配置文件详解
- Spring Boot 2.4 对多环境配置的反对更改
欢送关注我的公众号:程序猿 DD,取得独家整顿的收费学习资源助力你的 Java 学习之路!另每周赠书不停哦~