• Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响


    前几天在《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就能知道有哪些可选项了,还是方便不少。那么你对这样的配置调整怎么看呢?欢迎留言讨论!

  • 相关阅读:
    蓝桥杯 网络寻路
    ny33 蛇形填数
    集合运算 蓝桥杯 set容器
    蓝桥杯 回形取数
    bam/sam格式说明--转载
    samtools一些文档
    Linux批量更改文件后缀-转载
    GATK--使用转载
    Linux下wget下载整个FTP目录(含子目录)--转载
    CRLF line terminators导致shell脚本报错:command not found --转载
  • 原文地址:https://www.cnblogs.com/jieran/p/16476875.html
Copyright © 2020-2023  润新知