关于使用@Bean注解注入bean导致ConditionOnMissBean和
ConditionOnBean
注解有时候会失效的问题

文档上提示,需要注意bean添加的顺序,因为该条件是根据当前加载的内容来判断是否符合,也就是说如果
@ConditionalOnBean 和
@ConditionalOnMissingBean 被提前加载,条件将无法成立,我们得保证bean Conditions被后加载,才会生效。
重点:
这里我们可能会想到使用@Order或是@AutoConfigureOrder注解来调整顺序,很遗憾,无法调整顺序,condition相关的处理是在包扫描的时候执行的,所以这里的顺序只根包扫描的顺序有关,而包扫描的顺序依赖包名和类名的字符排序,而
@AutoConfigureOrder只能调整bean的注入顺序,但是判断是否应该注入的Condition是被提前处理掉了的。
跟maven的pom中包引入的顺序也有关系,先引入的先扫描到
引入的两个包中都有@ConditionalOnMissingBean,先引入的包,先执行
解决办法:修改类路径来调整顺序或是调整包引入顺序
测试版本:spring boot 2.1.4.RELEASE