Spring根据条件动态判断 是否创建Bean

今天项目遇到一个问题

有一个Task定时任务要放到集群中执行,但是定时任务 只能有一个

这个时候需要Bean在初始化的时候 根据某个config判断是否创建Bean

查了一些资料 ,找到了@Conditional这个注解

@Bean
@Conditional(CheckConfig.class)//指定一个实现了Condition的类,他会返回一个boolean值
public class Task(){

}
//实现了Condition接口的类,作用就是判断是否满足条件
class CheckConfig implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadate) {
        boolean isOpen;
        try {
            isOpen = Constants.config.getBoolean("task.open");
        } catch (Exception e) {
            return false;
        }
        return isOpen;
    }
}

Properties 配置文件加一条task

task.open=true

Constants 是一个常量工具类

public class Constants {

    public static final String CLASS_PATH = Constants.class.getClassLoader().getResource("").getPath();
    public static final Configuration config = StaticConfigSupplier.getConfiguration();
}

这个时候就可以根据配置文件来判断是否创建Bean了

 

 

voidm

在黑暗中支撑和平的无名者

1 Comment

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐