目录
一、背景
Spring 4 开始引入了一个新的 @Conditional 注解,它可以用到带有@Bean注解的方法上,以实现该 bean 在特定条件下创建。值得一提的是,Spring 4 之后,@Profile 注解也进行了重构,使其基于 @Conditional 来实现。
二、使用方法
在带有 @Bean 注解的方法上添加 @Conditional 注解,代码如下:
@Bean
@Conditional(OysqExistsCondition.class)
public Oysq setOysqBean() {
return new Oysq();
}
其中,OysqExistsCondition 类继承了 Condition 接口,实现了matches() 方法,若 matches() 返回 true,则创建 bean,返回 false,则不创建。代码如下:
public class OysqExistsCondition implements Conditon {
public boolean matches (ConditionContext context, AnnotatedTypeMetadata metadata) {
return true;
}
}
接口的 ConditionContext 对象和 AnnotatedTypeMetadata 对象可以获取很多的信息,例如环境变量、bean的定义、ben的其它注解等等,用于协助判断。
(原创不易,转载请注明出处!!)