2020-02-21
庚子鼠年 戊寅月 甲午日
描述
springboot学习
技术博客:无
随笔
springboot注解
@Conditional
@Conditional是spring4就提供出来的基于条件的注解。该注解可以根据是否满足某一个特定条件来决定是否创建某个特定的Bean。比如可以通过@Conditional注解来实现只有当某个Bean被已创建时(存在时)才会创建另外一个Bean,这样就可以依据这一特定的条件来控制Bean的创建行为,这样的话我们就可以利用这样一个特性来实现一些自动的配置。
@Conditional是springboot实现**自动配置**的关键基础能力。在此基础上,springboot又创建了多个适用于不同场景的组合条件注解。
@ConditionalOnBean:当上下文中有指定Bean的条件下进行实例化。
@ConditionalOnMissingBean:当上下文没有指定Bean的条件下进行实例化。
@ConditionalOnClass:当classpath类路径下有指定类的条件下进行实例化。
@ConditionalOnMissingClass:当类路径下没有指定类的条件下进行实例化。
@ConditionalOnWebApplication:当项目本身是一个Web项目时进行实例化。
@ConditionalOnNotWebApplication:当项目本身不是一个Web项目时进行实例化。
@ConditionalOnProperty:当指定的属性有指定的值时进行实例化。
@ConditionalOnExpression:基于SpEL表达式的条件判断。
@ConditionalOnJava:当JVM版本为指定的版本范围时进行实例化。
@ConditionalOnResource:当类路径下有指定的资源时进行实例化。
@ConditionalOnJndi:在JNDI存在时触发实例化。
@ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个,或者有多个但是指定了首选的Bean时触发实例化。具体用法还要具体查看文档或源码