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
其中:
第一个
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支持,您的关注是我坚持的动力!
【往期推荐】
左滑右滑,在VS Code里滑个妹纸给你写喜欢的代码?
2020-12-18
教你一分钟内导出 Grafana 所有的 Dashboard
2020-12-18
注意!我们熟知的“摩尔定律”被废了...
2020-12-17
Spring Boot 2.4 对多环境配置的支持更改
2020-12-17
首支完全由 AI 创作的歌曲《未来之歌》发布!对于未来,你方了吗?
2020-12-16
扫一扫,关注我
知晓前沿科技,领略技术魅力
﹀
﹀
﹀
深度内容
推荐加入
欢迎加入知识星球,一起探讨技术架构,交流技术人生。
加入方式,长按下方二维码:
已在知识星球更新如下:
素质二连,走一个
Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响相关推荐
- Spring Boot 2.3 版本变化[翻译]
大家好,我是烤鸭: 最近在把低版本的springboot项目升级,正好翻译了下springboot 2.1-2.3 版本的更新日志. Github 原文:https://github.com/ ...
- Spring Boot 2.2版本变化[翻译]
大家好,我是烤鸭: 最近在把低版本的springboot项目升级,正好翻译了下springboot 2.1-2.3 版本的更新日志. Github 原文:https://github.com/ ...
- Spring Boot 2.1 版本变化[翻译]
大家好,我是烤鸭: 最近在把低版本的springboot项目升级,正好翻译了下springboot 2.1-2.3 版本的更新日志. Github 原文:https://github.com/ ...
- Spring boot 原生 elasticsearch 版本和 自定义版本冲突的问题解决
问题描述:我在自己项目定的pom 文件中引入 es 7.5.0,但是运行的过程中会报一个异常 NoSuchMethodError:org.elasticsearch.action...... 怀疑应该 ...
- Spring Boot+Vue从零开始搭建系统(一):项目前端_Vuejs环境搭建
前言 博主本身是一直从事Java后端开发,一直想独立开发一套完整前端和后端技术结合的项目来提升自己的技术水平,经过对业界的一些热点技术的了解并对技术栈选型考虑后,博主打算利用Vue.js和Spring ...
- Spring Boot+Maven将配置文件打包到Jar包外方便运维修改配置
导语 在小公司使用Spring Boot部署上线,因为环境太多,导致运维开发相互之间重复的打包jar包运行到不同的环境上,使用容器技术又显得有点浪费,所以就先将配置文件打包的jar包外面.然后运维 ...
- Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!
d之前介绍了Spring Boot 整合mybatis 使用注解方式配置的方式实现增删改查以及一些复杂自定义的sql 语句 .想必大家对spring boot 项目中,如何使用mybatis 有了一定 ...
- Spring Boot 入门 IDEA 版本 2小时学会springBoot 代码上传至gitee 或者github 事务没做出来
SpringBoot简化了xml的配置可以快速开发,节省很多的时间,springboot的配置速度更快,SpringMvc已经不如springboot了, 市面上更多的是使用spingboot这个框架 ...
- Spring Boot 2.x基础教程:使用Flyway管理数据库版本
之前已经介绍了很多在Spring Boot中使用MySQL的案例,包含了Spring Boot最原始的 JdbcTemplate(https://blog.didispace.com/spring-b ...
最新文章
- 64位IIS(IIS6/IIS7)上跑Asp + Jet.Oledb的设置要点
- gcnew 与 new 的区别
- SAP Spartacus里的StorefrontConfig静态类型
- jsp tag 自定义标签实现按钮的显示
- 【今日CV 视觉论文速览】15 Nov 2018
- cocos2d-x for xna创建动画-人物行走
- adas硬件_ADAS系统功能安全设计/SOTIF需求和测试实例/软件安全架构/硬件安全设计......
- 1章 SpringBoot介绍
- mybatisplus activerecord之mybatisplus entity XXX Not Found TableInfoCache.错误
- 注册双击Ctrl键 (DLL版)
- 29 伪造ICMP数据包的IP层
- 电脑桌面底部显示计算机图标怎么隐藏,电脑底部的任务栏如何隐藏
- java 电子邮件客户端_java中的电子邮件客户端
- vue实现上传图片和显示图片
- 分割评价指标MIOU
- Eclipse插件开发GEF
- 迈阿密大学的计算机系咋样,迈阿密大学计算机科学专业
- [2019HDU多校第四场][HDU 6617][D. Enveloping Convex]
- 台式计算机m4350,比超极本便携 评联想M4350q小型台式机
- Slax本土化:移动硬盘上的Linux中文套件(转)