关于java:Spring-Boot-24版本前后的分组配置变化及对多环境配置结构的影响

51次阅读

共计 2412 个字符,预计需要花费 7 分钟才能阅读完成。

前几天在《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 学习之路!另每周赠书不停哦~

正文完
 0