https://blog.csdn.net/likun557/article/details/105108901?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
1 @Conditional是做什么的?

2 @Conditional多个条件是什么逻辑关系?

3 条件判断在什么时候执行?

4 ConfigurationCondition和Condition有什么区别?什么时候使用ConfigurationCondition?

5 多个Condition执行的顺序是什么样的?可以配置优先级么?

6 可以介绍一下@Conditional常见的一些用法么?

1 @Conditional注解介绍

@Conditional注解是从spring4.0才有的,可以用在任何类型或者方法上面,通过@Conditional注解可以配置一些条件判断,当所有条件都满足的时候,被@Conditional标注的目标才会被spring容器处理。

比如可以通过@Conditional来控制bean是否需要注册,控制被@Configuration标注的配置类是需要需要被解析等。

效果就像这段代码,相当于在spring容器解析目标前面加了一个条件判断:

  1. if(@Conditional中配置的多个条件是否都匹配){
  2. //spring继续处理被@Conditional注解标注的对象
  3. }

@Conditional源码:

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