SpringBoot自定义条件注解

有时我们为了使程序更加灵活 需要多个类实现同一个接口,到注入时不希望通过指定属性的名称或者类型来进行注入 如下图:


两个类同时实现了ISkill接口 在注入时 编译会有错误提示 无法定位具体的实现类


该问题可以通过自定义条件注解来解决 可以通过实现Condition接口并实现其中的方法 如图 (具体返回值可根据自己具体业务决定)


通过配置类在注入时使用@Conditional(ConditionDiana.class)


标红是因为idea校验规则 不影响编译运行 具体原因不知....

此时在依赖注入时就可以将正确的类型注入到IOC容器中了

@Conditional 该注解提供给我们一个自己可以控制注入到IOC容器的bean的类型 

有人说可以通过@Autowired()和@Qualifier("")来解决 为什么要这么大费周章 因为这两个注解是通过IOC容器自动帮我们实例化 实例化的过程我们没办法灵活的操控需要实例化的bean 虽然可以通过构造方法和setter方法控制我们需要实例化的bean 但是当我们需要灵活决定需要注入的类型时

@Configuration和@Bean以及@Conditional结合起来就更加灵活了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容