Spring Boot 2.5.3版本@ConfigurationProperties注解无法导入问题咨询
你遇到的问题核心是Spring Boot依赖版本不统一,具体原因如下:
你的项目父依赖是自定义的test-lib,并未继承官方的spring-boot-starter-parent,所有Spring Boot官方starter(如spring-boot-starter-web、spring-boot-starter-security)的版本均继承自你自定义父依赖中的配置,而你单独为org.springframework.boot:spring-boot依赖指定了2.5.3版本,导致Spring Boot核心包和其他starter依赖的版本不匹配、类结构不一致,因此找不到ConfigurationProperties类。切换到2.4.0后刚好和父依赖中的starter版本对齐,因此可以正常使用。
步骤1:统一Spring Boot所有依赖版本
在当前项目的pom.xml中新增dependencyManagement节点,导入Spring Boot 2.5.3的全局依赖管理,所有Spring Boot相关组件的版本会自动统一,无需单独指定:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
如果你可以修改自定义的test-lib父依赖,建议将上述配置放到父依赖的dependencyManagement中,所有子项目都可以共用统一的版本规则。
步骤2:配置@ConfigurationProperties的生效规则
Spring Boot 2.2及以上版本,要让标注了@ConfigurationProperties的类被容器识别并注入配置,可任选以下一种方式:
- 在配置类上额外添加
@Component/@Configuration注解,配合项目的组件扫描自动注册 - 在启动类/配置类上添加
@EnableConfigurationProperties(你的配置类.class)注解,主动注册指定的配置类 - 在启动类上添加
@ConfigurationPropertiesScan("配置类所在包路径")注解,自动扫描指定包下的所有配置类,无需额外添加其他注解
补充说明
你当前依赖中引入的spring-boot-configuration-processor是编译期的注解处理器,仅用于生成配置的IDE提示元数据,不影响@ConfigurationProperties注解本身的导入和使用。
内容的提问来源于stack exchange,提问作者HastilyMadeAccount12345

