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

本文深入探讨了SpringBoot的@Conditional注解及其相关扩展,讲解了如何根据条件实例化Bean。同时,介绍了如何通过设置debug属性生成自动配置报告,以便于查看生效的自动配置类。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



