@ConditionalOnClass
作用:只有当指定的类在类路径存在时,标注该注解的组件才会被装配。
实际上是通过ClassLoader#loadClass(className) 或者 Class.forName(className) 方法判断类是否在类路径存在的。
看下@ConditionalOnClass注解的声明。
可知,OnClassCondition必然是Condition接口的实现类。
.
@ConditionalOnMissingClass
作用:只有当指定的类在类路径不存在时,标注该注解的组件才会被装配。
同样有一个@Conditional元注解,并且注解里面的参数是OnClassCondition。
·
OnClassCondition
下面看下OnClassCondition这个类。
由上文可知,它一定是Condition接口的实现类。对于Condition接口,我们重点关注它的matches(…)方法。
OnClassCondition的父类 - SpringBootCondition,直接