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

如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!

相关阅读

欢迎关注我的公众号:程序猿DD,获得独家整理的免费学习资源助力你的Java学习之路!另每周赠书不停哦~

Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响的更多相关文章

  1. 如何选择Spring cloud和 Spring Boot对应的版本

    如何选择Spring cloud和 Spring Boot对应的版本 首先,我们进入Spring Cloud官网,查询Spring cloud的版本和对应的Spring Boot版本 打开Spring ...

  2. Spring Boot修改Thymeleaf版本(从Thymeleaf2.0到3.0)

    Spring Boot默认选择的Thymeleaf是2.0版本的,那么如果我们就想要使用3.0版本或者说指定版本呢,那么怎么操作呢?在这里要说明下 3.0的配置在spring boot 1.4.0+才 ...

  3. spring boot 2.x版本:java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedDataBinder

    标题 ##搭建spring boot 2.0.3版本 使用alibaba的druid数据库连接池,com.github.pagehelper的分页插件,启动项目报错. 错误提示:java.lang.C ...

  4. 【Spring Boot】 Spring Boot 2.x 版本 CacheManager 配置方式

    Spring Boot 1.X RedisCacheManager 配置方式 @Bean public CacheManager cacheManager(RedisTemplate redisTem ...

  5. spring boot 热部署devtools实现(成功,主要是添加依赖后配置setting)

    1.devtools spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot ...

  6. Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!

    d之前介绍了Spring Boot 整合mybatis 使用注解方式配置的方式实现增删改查以及一些复杂自定义的sql 语句 .想必大家对spring boot 项目中,如何使用mybatis 有了一定 ...

  7. spring boot配置文件、日志配置和代码的多环境配置

    一般项目都逃不掉开发.测试和生产这三套环境,如果每次给这三套环境打包都去改配置,累死不说,还一不留心就出差错.倒不如每套环境各给一套配置来的轻松.上代码: 1.通用配置放在application.pr ...

  8. Spring Boot 升级框架版本 Spring 5.2 Invalid argument syntax org.springframework.core.env.Simple CommandLineArgs

    Invalid argument syntax org.springframework.core.env.Simple CommandLineArgs Parser.parse 具体问题应该是启动的c ...

  9. spring boot 笔记--第三章

    spring boot 笔记 第三章,使用Spring boot 构建系统: 强烈建议支持依赖管理的构建系统,Maven或Gradle 依赖管理: Spring Boot的每版本都会提供它支持的依赖列 ...

随机推荐

  1. 思维导图软件MindManager的视图介绍

    MindManager思维导图软件提供了多种视图帮助用户更好边界组织思维导图,包括导图视图.大纲视图.甘特图.链接的视图等等,下面将逐一介绍MindManager视图模式及其作用. 打开软件视图功能区 ...

  2. Boom 3D支持的音乐都有什么格式

    Boom 3D作为一款专业的3D环绕音效软件,支持多种音频.视频播放格式,除了常用的MP3.WMA.WAV音频格式外,Boom 3D还支持FLAC.AAC这些比较高级的音频格式.同时,Boom 3D还 ...

  3. word查找与替换

    ------------恢复内容开始------------ 如何快速删除大量空格键:查找和替换-更多-特殊格式-查找内容[特殊格式(段落标记)]设置为(^p^p,即点击两次段落标记),替换设置为(^ ...

  4. JavaSE 学习笔记01丨开发前言与环境搭建、基础语法

    本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8 ...

  5. 在HTML中调用打开摄像头

    1 <img src="imgs/qr.png" alt=""> 2 <video src=""></vide ...

  6. K 均值算法-如何让数据自动分组

    公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍到的一些机器学习算法都是监督学习算法.所谓监督学习,就是既有特征数据,又有目标数据. 而本篇文章要介绍 ...

  7. IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德

    仰不愧天,俯不愧人,内不愧心.关注公众号[BAT的乌托邦],有Spring技术栈.MyBatis.JVM.中间件等小而美的原创专栏供以免费学习.分享.成长,拒绝浅尝辄止.本文已被 https://ww ...

  8. jquery on 动态生成绑定事件

    $(document).on("mouseenter", ".v6-div-kind-ok", function () { alert();});

  9. 通过Dbeaver创建表格的时候,设置主键

    通过Dbeaver创建表格的时候,设置主键 Dbeaver介绍: ​ 这是一个开源的数据库连接工具,你需要安装jre才可以使用这个软件 在使用Dbeaver创建表的时候,会发现,不能直观地设置主键 这 ...

  10. moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.视频合成概述 视频合成,也称为非线性编辑,实际 ...