2 @Conditional多个条件是什么逻辑关系?
3 条件判断在什么时候执行?
4 ConfigurationCondition和Condition有什么区别?什么时候使用ConfigurationCondition?
5 多个Condition执行的顺序是什么样的?可以配置优先级么?
1 @Conditional注解介绍
@Conditional注解是从spring4.0才有的,可以用在任何类型或者方法上面,通过@Conditional注解可以配置一些条件判断,当所有条件都满足的时候,被@Conditional标注的目标才会被spring容器处理。
比如可以通过@Conditional来控制bean是否需要注册,控制被@Configuration标注的配置类是需要需要被解析等。
效果就像这段代码,相当于在spring容器解析目标前面加了一个条件判断:
if(@Conditional中配置的多个条件是否都匹配){
//spring继续处理被@Conditional注解标注的对象
}
@Conditional源码:
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conditional {
Class<? extends Condition>[] value();
}