为什么我的 Quartz 触发器在我的 Spring 启动应用程序重新启动时没有更新更改的 Cron 表达式?

Why is my Quartz trigger not updating changed Cron expression on restart of my Spring boot application?

我在我的 spring 引导应用程序中创建了一个 Cron 计划触发器,如下所示,它被完美地触发了。问题是,当我在下面的代码中更改 Cron 计划表达式并重新启动 spring 启动应用程序时,Cron 计划触发器没有得到更新并且仍在触发旧的 Cron 计划表达式值。

检查数据库 tables 时,我发现 table qrtz_cron_triggers 中的记录没有更新。

qrtz_cron_triggerstable中的记录是

"quartzScheduler" "Qrtz_NEReportProcessor_Job_Trigger" "DEFAULT" "0 30 22 ? * *" "Asia/Calcutta"

如何确保在我的 spring 启动应用程序重新启动时,cron 调度表达式值得到更新?我的代码如下。

    @Bean(name = "nRJobDetail")
    public JobDetail nRJobDetail() {
        return newJob().ofType(NEReportJob.class).storeDurably().withIdentity(JobKey.jobKey("Qrtz_NEReportProcessor_Job_Detail")).withDescription("Invoke NEReportProcessor Job service...").build();
    }

    @Bean
    public Trigger nRTrigger(@Qualifier("nRJobDetail") JobDetail job) {
        return newTrigger().forJob(job).withIdentity(TriggerKey.triggerKey("Qrtz_NEReportProcessor_Job_Trigger")).withDescription("NEReportProcessor trigger")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 00 23 ? * *")
                )
                .build();
    }

我想你忘记配置了

spring.quartz.overwrite-existing-jobs = true

Whether configured jobs should overwrite existing job definitions.