Spring 4.0.6 with quartz 1.8.6:setCronExpression方法未暴露给CronTriggerBean类

时间:2015-01-12 12:21:43

标签: java spring spring-mvc quartz-scheduler

我使用的是弹簧版4.0.6和石英,版本1.8.6。问题是,当我尝试使用配置类而不是xml(带@Configuration注释)时,我无法使用方法

设置cron表达式
  

CronTriggerBean ctBean = new CronTriggerBean();   ctBean.setCronExpression(" 0 35 15?* MON *");

请告诉我是否存在版本兼容性问题。

确切的错误是:

  

对于CronTriggerBean类型,方法setCronExpression(String)是未定义的

1 个答案:

答案 0 :(得分:4)

考虑使用CronTriggerFactoryBean

    @Bean
    public CronTriggerFactoryBean cronTriggerFactoryBean() {
        CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
        cronTriggerFactoryBean.setJobDetail(jobDetailFactoryBean().getObject());
        cronTriggerFactoryBean.setCronExpression("0 35 15 ? * MON *");
        return cronTriggerFactoryBean;
    }
    @Bean
    public JobDetailFactoryBean jobDetailFactoryBean() {
        JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
        jobDetailFactoryBean.setJobClass(YOUR_CLASS.class);
        return jobDetailFactoryBean;
    }

然后:

CronTrigger trigger = cronTriggerFactoryBean.getObject();

文档here说: “注意:与旧的CronTriggerBean类相比,这个FactoryBean对Quartz 1.x和Quartz 2.0 / 2.1都有效。”。