Spring Boot @Conditional 注解

Scroll Down

Spring Boot @Conditional注解

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

@Conditional注解定义
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conditional {
    Class<? extends Condition>[] value();
}
Condition
@FunctionalInterface
public interface Condition {
    boolean matches(ConditionContext var1, AnnotatedTypeMetadata var2);
}
ConditionContext
public interface ConditionContext {
    /**
     * 获取Bean
     */
    BeanDefinitionRegistry getRegistry();

    /**
     * 获取Bean工程,因此就可以获取容器中的所有bean
     */
    @Nullable
    ConfigurableListableBeanFactory getBeanFactory();

    /**
     * environment 持有所有的配置信息
     */
    Environment getEnvironment();

    /**
     * 资源信息
     */
    ResourceLoader getResourceLoader();

    /**
     * 类加载信息
     */
    @Nullable
    ClassLoader getClassLoader();
}