整体设计思路:
数据库 任务配置TASK表:REPEAT 字段表示是否需要重复执行,当不重复时CRON为具体时间点,只会执行一次
Task实体类和Mapper.xml 根据数据库字段自行创建。
废话不多说,直接上代码。
package com.yfjz.config;
import com.yfjz.model.AppData;
import com.yfjz.model.Task;
import com.yfjz.service.AppDataService;
import com.yfjz.service.BaseService;
import com.yfjz.utils.Constant;
import com.yfjz.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ContextLifecycleScheduledTaskRegistrar;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.config.TriggerTask;
import org.springframework.scheduling.support.CronTrigger;
import java.util.*;
/**
* @Author: zxh
* @Description: 扫描数据库配置的定时任务,根据cron执行;支持定时任务动态添加修