Spring 实现 SchedulingConfigurer 接口完成动态定时任务(配合数据库动态执行)
发布日期:2021-05-04 16:26:34 浏览次数:20 分类:精选文章

本文共 1630 字,大约阅读时间需要 5 分钟。

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@EnableSchedulingpublic 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);                }        );    }}

源码:

上一篇:《程序设计课》第20181009期 ——一个会写诗的程序员
下一篇:中国历史和世界史横向对照表,收藏了长知识。

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月05日 00时23分01秒