@ConditionalOnMissingBean何时触发
@ConditionalOnMissingBean在BeanDefinition注册前触发,仅当目标Bean尚未被注册时生效。它依据search策略检查已注册BeanDefinition、父容器及@Import导入的Bean,匹配类型或名称,未找到则执行@Bean方法,否则静默跳过。

当Spring容器在注册Bean前检查到目标类型或名称的Bean尚未存在时,@ConditionalOnMissingBean才会触发并允许当前@Bean方法执行。
触发时机:BeanDefinition注册前
Spring在解析@Configuration类生成BeanDefinition的过程中,对每个加了@ConditionalOnMissingBean的方法执行条件判断。这一步发生在Bean实例化之前,且仅在容器尝试注册该BeanDefinition时发生。
它不会在应用启动完成后再扫描、也不会在@Autowired注入时动态判断——错过这个窗口期,注解就彻底失效了。
触发前提:目标Bean尚未被注册
方法1:检查范围包括已加载的BeanDefinition、父容器中已存在的Bean、以及通过@Import导入的Bean。
方法2:若目标Bean已被其他配置类(如用户自定义的@Configuration)提前注册,则当前@ConditionalOnMissingBean标注的@Bean直接跳过,不报错也不覆盖。
【注意:包扫描顺序和配置类加载顺序会影响结果】 比如common模块的自动配置类若比业务模块的自定义配置类先被Spring扫描到,就可能误判为“缺失”,导致默认Bean被注册;反之则不会触发。
触发验证流程
第一步:Spring解析到@Bean方法上的@ConditionalOnMissingBean注解,提取其value、name、search等属性。
第二步:根据search策略(默认CURRENT,即仅查当前上下文),遍历所有已注册的BeanDefinition,比对类型匹配(isAssignableFrom)或名称精确匹配。
第三步:若未找到任何匹配项,则条件成立,继续执行该@Bean方法并注册返回的实例;否则整个方法体被跳过,不生成BeanDefinition。
这一步没有日志输出,也不抛异常,静默跳过是它的正常行为。
- 1 三角洲行动唯一官网入口 三角洲行动官方网址入口
- 2 俄罗斯引擎搜索入口推荐 俄罗斯引擎稳定使用方法汇总
- 3 yandex搜索引擎入口中文版 yandex最新中文版官方搜索入口
- 4 香香漫画官方网站入口 香香漫画网页版访问路径
- 5 Archive of Our Own 2026年最新网页版进入方法 AO3官网正式访问路径
- 6 漫蛙2(台版)访问入口 漫蛙2(台版)正版在线漫画入口
- 7 51漫画网入口更新-免费浏览51漫画网地址
- 8 yy漫画官方入口在哪 yy官方漫画免费登录阅读
- 9 谷歌浏览器网页版登录入口 Chrome浏览器官方指定访问链接
- 10 AO3最新官方入口网页_AO3镜像站点2026导航链接整理大全