前几天在《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反对,您的关注是我保持的能源!
相干浏览
- Spring Boot 1.x:属性配置文件详解
- Spring Boot 2.0:配置绑定 2.0 全解析
- Spring Boot 2.x基础教程:配置文件详解
- Spring Boot 2.4 对多环境配置的反对更改
欢送关注我的公众号:程序猿DD,取得独家整顿的收费学习资源助力你的Java学习之路!另每周赠书不停哦~