Condition接口代码如下:
public interface Condition {
boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata);
}
它是一个函数式接口,只有一个方法matches用来表示条件是否满足。matches方法中的ConditionContext类对象context可以通过getEnvironment方法获取环境对象。
@Conditional是一个注解:
public @interface Conditional {
Class<? extends Condition>[] value();
}
它包含了一个Condition类型Class的数组。
@Conditional注解可以把多个实现了Condition接口的类对象聚合起来,只有所有的Condition类对象matches方法都返回ture时,和@Conditional一起配合使用的@Bean注解下的方法返回的bean才会被注入到容器。