SpringBoot2.2版本配置绑定是不是有点坑了?
SpringBoot
版本升级兼容性一直做的不是多么的美丽,各个大分支之间由于底层使用的Srping
版本不同,才导致的这种问题出现,而升级到2.2.1.RELEASE
版本之后又遇到一个配置绑定
的坑。
问题描述
SpringBoot
在升级到2.2.1.RELEASE
版本后遇到了属性配置
绑定的问题,我去找到SpringBoot
版本发布的页面(Spring-Boot-2.2-Release-Notes)才了解到从2.2.1.RELEASE
版本开始@SpringBootApplication
注解已经不再添加@ConfigurationPropertiesScan
支持,需要手动进行配置,这一点我们从源码上可以更清楚的看到。
2.2.0.RELEASE
SpringBoot
2.2.0.RELEASE版本中@SpringBootApplication
注解部分源码如下所示:
1 |
|
通过源码我们可以看到2.2.0.RELEASE版本的@SpringBootApplication
注解默认添加了ConfigurationPropertiesScan
注解,也就是默认开启了扫描@ConfigurationProperties
注解的配置类,然后根据prefix
进行属性绑定。
2.2.1.RELEASE
SpringBoot
2.2.1.RELEASE版本中@SpringBootApplication
注解部分源码如下所示:
1 |
|
我们发现在SpringBoot
2.2.1.RELEASE版本的@SpringBootApplication
注解中已经不再默认添加@ConfigurationPropertiesScan
注解的支持了,也就是我们无法通过默认的配置实现扫描@ConfigurationProperties
注解的类,也无法将application.yml/application.properties
文件的配置内容与实体类内的属性进行绑定。
解决问题
SpringBoot
官方给出的解决方法是手动在@SpringBootApplication
注解的类上手动添加@ConfigurationPropertiesScan
即可,如下所示:
1 | /** |
敲黑板,划重点
SpringBoot
的每次中大版本升级往往会删除或者新增一些功能,建议大家关注SpringBoot
的动态,以免出现类似今天这篇文章的问题,根据官方的文档及时做出调整。
代码示例
如果您喜欢本篇文章请为源码仓库点个Star
,谢谢!!!
本篇文章示例源码可以通过以下途径获取,源码分支为2.x
,目录为springboot2-2-configuration-binding-bit-pitted
:
SpringBoot2.2版本配置绑定是不是有点坑了?
https://blog.minbox.org/springboot2.2-configuration-binding-bit-pitted.html