1.首先我们需要在启动类上添加注解(基于同一个模块中)
@EnableScheduling(/* 开启对定时任务的支持*/)
2.在项目中添加一个类
需要去实现SchedulingConfigurer这个接口并重写里面的configureTasks方法
@Slf4j
@Component
@EnableScheduling
public class CronScheduleTask(自定义类名) implements SchedulingConfigurer{
private static Logger logger = LoggerFactory.getLogger(CronScheduleTask.class);
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
Runnable task = new Runnable() {
@Override
public void run() {
--此处是需要执行的定时任务
}
};
Trigger trigger = new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
//执行于每一次任务的触发
String cron ="";--此处可以是从数据库获取cron或者其他动态的
if (StringUtils.isBlank(cron)) {
// Omitted Code ..
logger.info("trackScheduler定时器的cron参数为空!!!!!");
//如果为空则赋默认值
cron = "0 0 /1 * * ? ";
}
logger.info("cron expression is [{}]",cron);
logger.info("trigger list size is [{}]",taskRegistrar.getTriggerTaskList().size());
CronTrigger cronTrigger = new CronTrigger(cron);
Date nextExecTime = cronTrigger.nextExecutionTime(triggerContext);
return nextExecTime;
}
};
taskRegistrar.addTriggerTask(task, trigger);
}
}