Spring系列——@Conditional
前言
Spring4推出了@Conditional注解,方便程序根据当前环境或者容器情况来动态注入bean,SpingBoot在@Conditional的基础上派生出许多注解,如@ConditionalOnMissingBean、@ConditionalOnExpression、@ConditionalOnClass等,这样使得我们动态注入Bean更加简洁方便,所以我觉得我们有必须来好好的学习一下@Conditional注解。
源码解析
- @Conditional注解源码
@Target({
ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conditional {
Class<? extends Condition>[] value();
}
从这个注解的源码我们可以看出这个注解是作用在类上或者方法上的,并且@Conditional保留在运行时期,@Conditional注解只有一个value属性,它是Condition的子类。
- Condition源码
public interface Condition {
/**
* Determine if the condition matches.
* @param contex