前几天在《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

其中:

  1. 第一个spring.profiles.active: dev,代表默认激活dev配置
  2. 第二段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字段(下面配置了devprod),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学习之路!另每周赠书不停哦~