SpringBoot 是原生支持配置迁移的,但是官方文档没有看到这方面描述,在源码中才看到此模块,
spring-boot-properties-migrator
,幸亏我没有跳过。看到这篇文章的各位,可算是捡到宝了,相信你继续往下看下去,定会忍不住点赞、收藏、关注。
效果
先放个效果吸引你 🙂
从 SpringBoot
2.0.0
版本开始,配置服务上下文,不支持
server.context-path
,而需要
server.servlet.context-path
配置。但是只要加上以下一个官方依赖,就可以支持使用
server.context-path
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
</dependency>
server.context-path
所对应的属性
ServerProperties#contextPath
在 Java 代码中已不存在,
server.servlet.context-path
所对应的的属性在内部类
Servlet
中才有,为何加了此依赖就能实现如此神奇的效果呢。
原理
SpringBoot 对外部化配置原生支持迁移功能,所谓迁移,具体是指对应配置的属性名变动,仍可以使用原来的属性名配置。在
spring-configuration-metadata.json
的信息可以辅助 IDE 进行配置的提示,也可以用来完成配置的迁移。非常的简单。
相关文章:
SpringBoot 配置提示功能
通过阅读代码,获得以下信息:
-
监听
ApplicationPreparedEvent
事件(即:环境已准备事件),执行以下操作并收集信息 -
从
classpath*:/META-INF/spring-configuration-metadata.json
中载入所有配置 -
从上下文的
enviro