关于Spring Boot创建定时任务非常简单,有两种方式进行创建。
第一种注解方式(静态参数):
使用@Scheduled 进行创建定时任务,仅仅几行代码就可以完成。而且支持灵活的参数表达式cron,还有支持简单的延时操作,例如 fixedDelay ,fixedRate 填写相应的毫秒数即可。实现方式如下:
@Scheduled(fixedDelay = 1000)
public void configureTasks() {
System.err.println("当前时间: " + LocalDateTime.now());
}
第二种实现接口的方式(支持动态参数):
实现接口SchedulingConfigurer 的configureTasks方法,将定时任务进行创建并添加到ScheduledTaskRegistrar当中进行执行,该方式支持参数的动态获取,间隔时间参数或cron表达式可从配置文件和数据库中进行获取。实现方式如下:
public class Test implements SchedulingConfigurer {
@Value("${idle-timeout}")
private long time;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(()-> System.out.println("间隔时间:"+time),
triggerContext -> {
System.out.println("当前时间:"+LocalDateTime.now());
return new PeriodicTrigger(time).nextExecutionTime(triggerContext);
}
);
}
}
注意:如果使用的是cron表达式,采用new CronTrigger("0/1 * * * * ?")的方式进行使用。