@Slf4j
@Service
@Lazy(false)
public class MySchedule implements SchedulingConfigurer {
/**
* 这里可以结合配置中心使用
*/
@Value("0/5 * * * * ?")
private String expression;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(() -> {
log.info("task run");
}, (triggerContext) -> {
CronTrigger trigger = new CronTrigger(expression);
return trigger.nextExecutionTime(triggerContext);
});
}
}
这里有个问题需要记录一下,上面代码的实现原理,是通过上次任务执行的时候,为下次的任务执行设置时间,也就是说,如果上次任务已经执行过了,下次任务还没有执行,那么这里会等待下次任务执行的之后,才会把下下次任务执行的时间修改为你设置的时间。
更多推荐
springboot中 让Schedule 动态时间执行
发布评论