1、首先配置SpringBoot的定时任务开启@EnableScheduling
2、代码实现,实现SchedulingConfigurer接口,这里的cron表达式以成员变量的方式获取,还可以用读取配置文件的方式实现
@Component
public class DynamicTask implements SchedulingConfigurer {
//需要注入的类
@Autowired
private AdvertStatisticTask advertStatisticTask;
//时间表达式 每10秒执行一次
private String cron = "0/10 * * * * ?";
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(() -> {
System.out.println("---------------start-------------------");
System.out.println("动态修改定时任务参数,时间表达式cron为:" + cron);
//TODO something
System.out.println("当前时间为:" + sdf.format(new Date()));
System.out.println("----------------end--------------------");
}, triggerContext -> {
CronTrigger cronTrigger = new CronTrigger(cron);
Date nextExecDate = cronTrigger.nextExecutionTime(triggerContext);
return nextExecDate;
});
}
public void setCron(String cron) {
this.cron = cron;
}
},