在SpringBoot @Scheduled中更新Cron表达式

tia*_*o92 7 java spring scheduled-tasks

我约有@Scheduled和一个硬编码的cron表达式安排了约10个工作,如下所示:

@Scheduled(cron = "* * 1 * * *")
public void testMethod(){
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够通过数据库更新此cron表达式,并在运行时重新计划特定的作业。

有谁知道该怎么做?

谢谢

Mic*_*ael 7

如果您想在运行时配置作业调度,我认为您不能使用注释@Scheduled

您可以使用自己的调度程序代替Spring文档中的内容

scheduler.schedule(task, new CronTrigger("0 15 9-17 * * MON-FRI"));
Run Code Online (Sandbox Code Playgroud)

然后,如果要更改配置,可以取消计划并创建一个新的计划。

TaskScheduler返回ScheduledFuture您应保存在某处的,可以使用cancel(...)方法将其取消。