首页 > 解决方案 > 我可以使用属性设置禁用 SchedulerFactoryBean 中的特定作业吗?

问题描述

我看过一篇帖子,其中的解决方案可能有效,但那是 9 年前的事了。

public class MySchedulerFactoryBean extends org.springframework.scheduling.quartz.SchedulerFactoryBean {

    @Autowired
    private @Value("${enable.quartz.tasks}") boolean enableQuartzTasks;

    @Override
    public void afterPropertiesSet() throws Exception {
        if (enableQuartzTasks) {
            super.afterPropertiesSet();
        } 
    }
}

是否有任何可能的方法可以在此方法上使用相同的设置?

@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
    SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
    schedulerFactoryBean.setTriggers(
            fpCronTriggerFactoryBean().getObject(),
            psCronTriggerFactoryBean().getObject(),
            ofbCronTriggerFactoryBean().getObject(),
            mglCronTriggerFactoryBean().getObject());

    return schedulerFactoryBean;
}

基本上,例如,我fpCronTriggerFactoryBean().getObject()不希望以这种方式被或或或条件触发或任何特定truefalse工作1实例0

更新:

我想我可能已经弄清楚了配置。

@Value("${enable.fp.quartz.tasks}")
private boolean enableFpQuartzTasks;

@Value("${enable.ps.quartz.tasks}")
private boolean enablePsQuartzTasks;

@Value("${enable.ofb.quartz.tasks}")
private boolean enableOfbQuartzTasks;

@Value("${enable.mgl.quartz.tasks}")
private boolean enableMglQuartzTasks;

@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
    SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();

    if (enableFpQuartzTasks) {
        schedulerFactoryBean.setTriggers(fpCronTriggerFactoryBean().getObject());
    }
    if (enablePsQuartzTasks) {
        schedulerFactoryBean.setTriggers(psCronTriggerFactoryBean().getObject());
    }
    if (enableOfbQuartzTasks) {
        schedulerFactoryBean.setTriggers(ofbCronTriggerFactoryBean().getObject());
    }
    if (enableMglQuartzTasks) {
        schedulerFactoryBean.setTriggers(mglCronTriggerFactoryBean().getObject());
    }

    return schedulerFactoryBean;
}

应用程序.properties -

enable.fp.quartz.tasks = false
enable.ps.quartz.tasks = false
enable.ofb.quartz.tasks = false
enable.mgl.quartz.tasks = true

现在我的问题是,有没有办法为每个重复这一点,以便它可以在里面有一个设置application.properties?喜欢10和空格分隔吗?例如,enable.job.task= 0 0 1 1

任何输入表示赞赏,谢谢!

标签: javaspringspring-bootspring-mvcquartz-scheduler

解决方案


推荐阅读