【参考】https://blog.youkuaiyun.com/yhahaha_/article/details/88638490
https://blog.youkuaiyun.com/Janson_Lin/article/details/87778878
@Conditional和@Condition都是spring的注解, springboot下有@ConditionalOnClass, @ConditionalOnBean, @ConditionalOnMissingBean等注解扩展了其功能.
- @Conditional注解说明:其参数是实现了Condition接口的类的数组,通常和Condition接口配合使用,只有接口的实现类(一个或多个)都返回true才装配,否则不装配。
- Condition接口解释:接口中只有一个matches方法,返回boolean,为true则装配bean,false则不装配。
- @ConditionalOnProperty:Name:配置名,HavingValue:当值为这个时生效,matchIfMissing:没有这个配置时是否装配,true为装配,否则不装配
- @ConditionalOnClass:存在某个类时装配,也就是说类路径中有这个类就装配
- @ConditionalOnBean:容器中有这个bean才装配
使用场景
它一般和 @Component、 @Service、 @Configuration等注解配合使用,或者用在由 @Bean标记的方法上。如果一个 @Configuration类标记了 @Conditional,则该类中所有标识了 @Bean的方法和 @Import注解导入的相关类将遵从这些条件。