前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >@ConditionalOnMissingBean注解使用

@ConditionalOnMissingBean注解使用

作者头像
JavaEdge
发布2018-05-16 09:58:44
1.7K0
发布2018-05-16 09:58:44
举报
文章被收录于专栏:JavaEdgeJavaEdge

仅当 BeanFactory 中不包含指定的 bean class 和/或 name 时条件匹配

该条件只能匹配到目前为止 application context 已经处理的 bean 定义,因此强烈建议仅在自动配置类上使用此条件。

如果候选 bean 可能由另一个自动配置创建,请确保使用此 condition 的自动配置类在其后运行。

代码语言:javascript
复制
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnBeanCondition.class)
public @interface ConditionalOnMissingBean {

    /**
     * 需要检查的 bean 的 class 类型。当 ApplicationContext 不包含每一个被指定的 class 时条件匹配。
     */
    Class<?>[] value() default {};

    /**
     * 需要检查的 bean 的 class 类型名称(Java全限定名)。当 ApplicationContext 不包含每一个被指定的 class 时条件匹配。
     */
    String[] type() default {};

    /**
     * 识别匹配 bean 时,可以被忽略的 bean 的 class 类型
     */
    Class<?>[] ignored() default {};

    /**
     * 识别匹配 bean 时,可以被忽略的 bean 的 class 类型名称(Java全限定名)
     */
    String[] ignoredType() default {};

    /**
     * 装饰需要检查的 bean 的注解。当 ApplicationContext 不包含带有这些注解的 bean 时条件匹配。
     */
    Class<? extends Annotation>[] annotation() default {};

    /**
     * 需要检查的 bean 的 name。当 ApplicationContext 不包含任意指定的每一个的 class 时条件匹配。
     */
    String[] name() default {};

    /**
     * 决定是否应考虑 application context 层次(parent contexts)的策略。
     */
    SearchStrategy search() default SearchStrategy.ALL;

}

使用示例如下:

代码语言:javascript
复制
@ConditionalOnMissingBean
@ConditionalOnMissingBean(TransactionManager.class)
@ConditionalOnMissingBean(ignored = {DistributedCommandBus.class})
@ConditionalOnMissingBean({EventStorageEngine.class, EventBus.class, EventStore.class})
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档