Bootstrap

Spring Task,Quartz,XXL-Job的简单总结

Spring Task

简介

Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。可以使用@Scheduled注解和Cron表达式或者周期性的时间间隔来安排任务的执行。

快速入门

在启动类上添加@EnableScheduling注解以启用调度功能。

@SpringBootApplication
@EnableScheduling
public class TaskApp {
   
    public static void main(String[] args) {
   
        SpringApplication.run(TaskApp.class);
    }
}

在需要定时执行的方法上加注解@Scheduled,常见参数及作用如下:

  1. fixedRate:定义了方法调用之间的固定周期,以毫秒为单位。例如,如果你指定 fixedRate = 5000,则方法将每5秒执行一次,不考虑方法执行所需的时间。
  2. fixedDelay:定义了方法执行完成后到下一次方法开始执行之间的延迟,同样是以毫秒为单位。例如,fixedDelay = 5000 表示在方法执行完成后,5秒钟后再次执行该方法。
  3. initialDelay:用于定义延迟首次执行方法的时间。它通常与 fixedRatefixedDelay 结合使用,以确定启动后延迟多久开始执行方法。比如 initialDelay = 10000 将会在应用启动后10秒钟才开始执行首次任务。
  4. cron:允许使用 cron 表达式来定义执行计划。cron 表达式是由6或7个空格分隔的时间字段组成,分别表示秒、分钟、小时、日、月、星期和年(可选)。例如,cron = "0 * * * * ?" 将会在每分钟的开始时刻执行一次。

在线Cron表达式生成器

@Component
public class ScheduleTest {
   

    // 每5秒执行一次
    @Scheduled(fixedRate = 5000)
    public void doSomething() {
   
        System.out.println("ScheduleTest.doSomething");
    }

    // 在上一次执行完成后,5秒钟再执行
    @Scheduled(fixedDelay = 5000)
    public void doSomethingAfterDelay() {
   
        System.out.println("ScheduleTest.doSomethingAfterDelay");
    }

    // 应用启动10秒后第一次执行,然后每5秒执行一次
    @Scheduled(initialDelay = 10000, fixedRate = 5000)
    public void doSomethingWithInitialDelay() 
;