深入源码分析SpringBoot中使用@ConditionalOnBean无效的问题

深入源码分析SpringBoot中使用@ConditionalOnBean无效的问题

此时问题就出现了,明明在代码工程中我们在xml中定义了Cluster实例,但是为什么启动的过程中SpringBoot在OnCondition判断的却找不不到该实例呢?接下来我们就从源码的层面分析下。

三、问题分析

======

1、原因分析

======

首先我们找到ConditionalOnBean的处理源码。其在OnBeanCondition的collectBeanNamesForType中。这里就是SpringBoot通过Cluster类型去查找对应的Bean实例的地方,如果找不到对应的Bean就不会实例化。通过debug咱们可以看到此时却是无法通过

beanFactory.getBeanNamesForType获取到Cluster的Bean实例。

深入源码分析SpringBoot中使用@ConditionalOnBean无效的问题

然后咱们通过源码跟踪到具体获取代码地址:

DefaultListableBeanFactory.getBeanNamesForType

-> DefaultListableBeanFactory.doGetBeanNamesForType

-> AbstractBeanFactory.isTypeMatch

-> Abs

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值