• @Conditional 相关注解


    @Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。

    @Conditional的定义:

    //此注解可以标注在类和方法上
    @Target({ElementType.TYPE, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Conditional {
    Class<? extends Condition>[] value();
    }
    从代码中可以看到,需要传入一个Class数组,并且需要继承Condition接口:

    public interface Condition {
    boolean matches(ConditionContext var1, AnnotatedTypeMetadata var2);
    }
    Condition是个接口,需要实现matches方法,返回true则注入bean,false则不注入。
    https://blog.csdn.net/xcy1193068639/article/details/81491071

    Spring框架还提供了很多@Condition给我们用,当然总结用语哪种好理解,看给位读者喽

    @ConditionalOnProPerty:定义某个指定参数是否满足设定值,满足就加载,不满足就不加载https://blog.csdn.net/u010002184/article/details/79353696

    @ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
    @ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)
    @ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean)
    @ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)
    @ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)
    @ConditionalOnNotWebApplication(不是web应用)

    后续会继续补充

    另一种总结

    @ConditionalOnClass:该注解的参数对应的类必须存在,否则不解析该注解修饰的配置类;
    @ConditionalOnMissingBean:该注解表示,如果存在它修饰的类的bean,则不需要再创建这个bean;可以给该注解传入参数例如@ConditionOnMissingBean(name = "example"),这个表示如果name为“example”的bean存在,这该注解修饰的代码块不执行
    ---------------------
    作者:浪子艳少
    来源:CSDN
    原文:https://blog.csdn.net/win7system/article/details/54377471
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    servlet里的forward和redirect的区别
    JSP九大内置对象
    float和Float的区别
    Throwable相关知识1
    常见异常和错误总结
    final/finalize/finally的区别
    mysql命令大全
    mongodb安装
    mysql编译安装(详细)
    mysql的三种安装方式(详细)
  • 原文地址:https://www.cnblogs.com/suntp/p/10156466.html
Copyright © 2020-2023  润新知