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
中载入所有配置 - 从上下文的