前提概述:springboot定时器开发特别简单,本篇文章不做介绍(通过配置@EnableScheduling和@Scheduled(cron=""实现),动态定时器相对复杂,大概有两种实现方式:1.读取数据库的cron参数,2.读取配置文件cron参数。我这边采用读取配置文件的方式简单的介绍一下如何使用。
动态定时任务实现步骤如下
1、定时器类继承SchedulingConfigurer并重写其方法configureTasks;
2、cron1为application.properties文件中设置的定时任务设置,可以通过修改配置文件修改任务执行计划,下面的代码使用的lambda表达式,有不懂的可以自行查看一下具体的使用方式。
@Component
public class Schedule implements SchedulingConfigurer {
@Value("${schedule.cron1}")
String cron1 ;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(()->logger.info("The daily task execution program begins.")
,triggerContext->new CronTrigger(cron1).nextExecutionTime(triggerContext)) ;
/*taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
logger.info("The daily task execution program begins.") ;
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 定时任务触发,可修改定时任务的执行周期
CronTrigger trigger = new CronTrigger(cron1);
Date nextExecDate = trigger.nextExecutionTime(triggerContext);
return nextExecDate;
}
});*/
}
}
由于我个人正在搭建springcloud配置中心功能,可以通过springcloud的配置中心功能达到定时任务的动态设置功能。