@Conditional
@Conditional 是 spring framework 中提供的一个条件注解,,满足条件就注入,不满足就不注入ioc
@Condtional
需要和 Condition接口
一起用:
返回true注入,返回false不注入,, 里面有一个 ConditionContext
这个接口
- 可以获取bean的定义BeanDefinitionRegistry
- 获取配置信息,资源加载信息 Environment
- 获取其他bean信息,BeanFactory
在@Component注入ioc的bean上面都可以加 @Conditional注解,判断是否加入IOC
@Conditional的成品注解
spring framework 中提供了很多@Conditional 的成品注解:
- @ConditionalOnProperty
判断配置文件和你设置的值一不一样,,// 判断是否有 app.fruit的配置, // matchIfMissing : 如果没有也让他注入 @ConditionalOnProperty(prefix = "app",name = "fruit",matchIfMissing = true)
引用:https://blog.csdn.net/qq_42145871/article/details/118310230// 判断配置文件 `fruit.name` 的值,是否和自己设置的值一样,一样就注入 // matchIfMissing : 不管是否为true,都只会按照判断的结果来注入 @ConditionalOnProperty(value = "fruit.name",havingValue = "apple")
- @ConditionalOnBean
ioc中存在指定的bean,注入// 存在名字为 mysql的 bean 就注入 @ConditionalOnBean(name = "mysql")
- @ConditionalOnMissingBean