我们上一次学习了SpringBoot的自动配置原理,我们会发现在自动配置之前有一些判断条件,这些判断条件判断成功之后,自动配置才能够生效。这些判断均为@ConditionOnxxxxx,其底层都是用注解@Conditional做的,我们就来学习一下这个注解
@Conditional
我们先来找一下底层文件,还是上一次用的HttpEncodingAutoConfiguration文件,随便进入其中的一个判断,例如@ConditionalOnClass
然后我们就会发现@Conditional,后边指定了一个条件判断类,OnClassCondition.class,点进去里面会有很多判断语句,这些语句判断成功了,才能返回去执行自动配置功能
下面是@Conditional的扩展注解
@ConditionalOnBean:仅仅在当前上下文中存在某个对象时,才会实例化一个Bean
@ConditionalOnClass:某个class位于类路径上,才会实例化一个Bean
@ConditionalOnExpression:当表达式为true的时候,才会实例化一个Bean
@ConditionalOnMissingBean:仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean
@