Spring 实现 SchedulingConfigurer 接口完成动态定时任务(配合数据库动态执行)

Spring 实现 SchedulingConfigurer 接口完成动态定时任务(配合数据库动态执行)

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.util.StringUtils;

import java.time.LocalDateTime;

@Configuration
@EnableScheduling
public class CompleteScheduleConfig implements SchedulingConfigurer {

    @Mapper
    public interface CronMapper {
        @Select("select cron from cron limit 1")
        String getCron();
    }

    @Autowired
    @SuppressWarnings("all")
    CronMapper cronMapper;

    /**
     * 执行定时任务.
     */
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> System.out.println("执行定时任务2: " + LocalDateTime.now().toLocalTime()),
                //2.设置执行周期(Trigger)
                triggerContext -> {
                    //2.1 从数据库获取执行周期
                    String cron = cronMapper.getCron();
                    //2.2 合法性校验.
                    if (StringUtils.isEmpty(cron)) {
                        // Omitted Code ..
                    }
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );
    }

}

源码:

https://github.com/yizhiwazi/springboot-socks/blob/master/springboot-schedule-task/src/main/java/com/hehe/config/CompleteScheduleConfig.java

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 121,791评论 17 134
  • 感情是一种天分 最忌讳过分认真 谁都怕背负太多责任 可悲的第三人称 我和你并不等于我们 又哪来的名分 玩弄于掌心的...
    触碰不到的时光阅读 118评论 0 2
  • 国家宗教事务局副局长蒋坚永,带领中国道教协会会长李光富道长,张凤林副会长兼秘书长一行视察指导青华宫道观建设。 新加...
    丝绸之路网阅读 423评论 0 1
  • 给我发照片的是个姑娘。加微信后,她说我付费吧,不能让你白忙活。好感动!我在想,要不要给她加个塞。还在想,我一定要把...
    尧光gxl阅读 626评论 22 16
  • 第二天 今天比较从容,从盐池到张掖八个小时。七点四十多从酒店出来,街上没什么人,边上的街里有一家今天开业的早点,去...
    已太迟2008阅读 44评论 0 0