@Conditional 初学

点击@Conditional

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conditional {
    Class<? extends Condition>[] value();
}

发现此注解注入并且返回的参数是  一个继承了Condition 对象的接口的Class[] 数组

再进入 Condition 可发现

public interface Condition {
    boolean matches(ConditionContext var1, AnnotatedTypeMetadata var2);
}

此接口要实现mathes方法,关键就在此方法上,两个参数请注意!

@param conditionContext:判断条件能使用的上下文环境

@param annotatedTypeMetadata:注解所在位置的注释信息

conditionContext提供多种方法,具体例如,获取类加载器,当前环境信息(通过当前环境信息判断,当前系统名什么的)

  最终这个方法是返回boolean的值如果实true 则代表当前标注的类,或者当前标注的方法是被允许注入到IOC容器中!!!

但是要注意这里只是说的是标注在方法体上

如果标注在类上则代表着整个类中的所有方法体都将要被判断是否允许被允许注入到容器中

总结:   1 @Conditional  判断是否允许被注入到IOC中

             2  标注到类上则代表判断类中的所有的方法是否允许都被注入到ioc中即能否被实例化

             3  如果传入的是一个以上的Class 对象的话  boolean值就相当于 && 符号,都返回true才被允许,有一个false则代表整体false!!!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值