自定义互斥条件注解引发Spring Boot Bean重复装配问题排查
Spring Boot 自定义条件注解互斥逻辑失效导致多Bean装配问题
现有实现逻辑
- 项目中存在实现
SharedInterface接口的两个业务组件,设计上两个组件完全互斥,同一时间最多只有一个组件会被装配到Spring容器中 - 基于
@ConditionalOnProperty封装了两个自定义条件注解,分别绑定my-prefix.enable-this-thing配置项的true、false判断分支 - 两个实现
SharedInterface接口的组件,分别标注上述两个互斥条件注解 - 依赖
SharedInterface的消费者类通过构造器注入实现类
实际异常表现
运行时两个组件均被成功装配到容器中,导致依赖SharedInterface的消费者类注入时抛出多Bean匹配异常。
待解决诉求
- 定位当前自定义条件注解的配置错误根因,修正互斥失效问题
- 依托自定义注解封装通用条件判断逻辑,避免在项目大量类上重复编写相同的
@ConditionalOnProperty配置 - 了解是否存在不依赖
@Conditional系列注解即可实现Bean可选自动装配的更优实现方案
内容的提问来源于stack exchange,提问作者Taugenichts
相关产品推荐
相关产品推荐

