都是Spring初始化时,加载Bean的条件判断
@DependsOn 表示需要依赖于某个Bean加载完成之后,再加载,时依赖关系
@ConditionOnBean
表示加载当前Bean需要 某个Bean也加载了,不是强依赖关系,并不会去加载这个依赖的Bean
需要容器自己已经加载了这个Bean,它才再加载,否则不加载。也就是都有,或者都没有
@ConditionOnMissingBean
正好与@ConditionOnBean注解相反,当容器不存在某个Bean,我就加载我这个Bean,否则容器中已经有了某个Bean,我当前Bean就不加载
@Conditional
该注解可以理解为是@ConditionOnBean、@ConditionOnMissingBean的父类注解,都是靠@Conditional注解机制实现的
如:@ConditionalOnBean注解,是加了@Conditional注解的,下图所示
@ConditionOnMissingBean注解如下
可以通过自定义Condition继承SpringBootCondition的模板方法,实现Condition接口的matches方法,返回 boolean是否匹配成功