修改springboot 定时Cron任务

优点:可以修改cron表达式。
缺点:如果执行周期由大变小,但只能等到下个周期生效。eg:任务由每天执行一次改为每小时执行一次,如果今天任务已经执行,会在明天的这个时间再执行一次,再此之后会每小时执行一次;如果今天没有执行,那么会在今天执行后,每小时执行一次。

@Slf4j
@EnableScheduling
@Configuration
public class CronTask implements SchedulingConfigurer {

    @Autowired
    YourService yourService;

    public void run() {
           // TODO your job
    }

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        Trigger trigger = triggerContext -> {
            //任务触发,可修改任务的执行周期.
            //每一次任务触发,都会执行这里的方法一次,重新获取下一次的执行时间
            String cron = "0 0/10 * * * ?";
            CronTrigger trigger1 = new CronTrigger(cron);
            Date nextExec = trigger1.nextExecutionTime(triggerContext);
            log.info("任务下一次运行时间:{}", nextExec);
            return nextExec;
        };
        Runnable task = () -> {
            //任务逻辑代码部分.
            run();
        };
        taskRegistrar.addTriggerTask(task, trigger);
    }


你可能感兴趣的:(修改springboot 定时Cron任务)