@Conditional 可以满足当某个条件为true时注册 bean
@Conditional 源码
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conditional {
/**
* All {@link Condition}s that must {@linkplain Condition#matches match}
* in order for the component to be registered.
*/
Class<? extends Condition>[] value();
}
我们可以看到,@Conditional 可以注解在类上,也可以注解在方法上,并且接受一个实现了 Condition 接口的类
Condition 接口源码
public interface Condition {
// 满足条件返回true,则注解的bean会被加载到容器中
boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata);
}
咖啡小馆
QQ群: 823971061 点击按钮入群