Hi!请登陆

通过@Conditional注解简简单单实现按条件注入Bean

2021-2-23 31 2/23

@Conditional注解是Spring4之后提供的一个注解,该注解可以作用在类和方法上。

这个注解用于添加条件来控制Bean是否可以注册到Spring的IOC容器中。

从@Conditional注解的源码中,我们可以发现该注解的value属性接收的值是一个Condition类型的数组。Condition接口就是控制Bean注入的条件。

Condition接口中提供了一个matches方法,该方法用于编写业务逻辑控制bean的注入,当方法的返回值为true时,表示标注了该注解的Bean可以注入到Spring的IOC容器中,为false时表示不可以。

matches方法有两个参数:ConditionContext和AnnotatedTypeMetadata。

ConditionContext是:判断条件的上下文信息。(重点关注这个参数)

AnnotatedTypeMetadata:注解所在位置的注释信息。

案例演示

通过代码来演示一下@Conditional注解的使用。

需要注入的bean

自定义条件类

配置类

测试类

执行结果

我试验了多种情况总结出了以下几点结论:

1、当@Conditional注解中有多个判断条件时,必须所有条件都满足(都返回true),该bean才会注入到IOC容器中。2、如果@Conditional注解添加到了配置类上,那么当条件不满足时,类中配置的多个bean都不会注册到IOC容器中。3、当@Conditional注解在类和方法上都存在时,会先验证类上的条件,然后在验证方法上的条件,这其中有一项不满足将不会把bean注册到IOC容器中。

相关推荐