java如何使用多个cron设置时间表,以便在spring boot中执行一项任务
现在我已经实现了一个SchedulingConfigurer类,以实现动态调度任务,如下代码所示
@Component
public class DynamicScheduledTask implements SchedulingConfigurer {
private static final String DEFAULT_CRON = "* * * * * ?";
private String cron = DEFAULT_CRON;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
//TODO MyTask
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
CronTrigger trigger = new CronTrigger(cron);
Date nextExecDate = trigger.nextExecutionTime(triggerContext);
return nextExecDate;
}
});
}
public void setCron(String cron) {
this.cron = cron;
}
}
但是上面的代码只使用一个cron表达式执行一个任务,而我需要使用多个corn表达式设置一个时间表来执行一个任务,我应该怎么做
# 1 楼答案
创建一个单独的(bean)类来执行cron任务。我的意思是把你在run方法中的代码放到另一个类中
然后创建两个类,比如上面的
DynamicScheduledTask1
和DynamicScheduledTask2
。在这两个类中,都向CronJobTask添加了依赖项从这两个类中的run方法调用
假设您通过rest调用从用户那里获得时间。因此,在控制器类中,向两个DynamicScheduledTask添加依赖项
所以当你从用户那里得到时间。计算cron时间并执行以下操作: