在 SpringBoot 中使用定时任务非常简单,只需要两个注解就可以实现。
第一个注解@EnableScheduling
在项目的启动类上,加上注解 @EnableScheduling ,开启定时任务支持。示例如下所示:
package com.yuhuofei;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@SpringBootApplication
public class SpringbootSwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootSwaggerApplication.class, args);
}
}
第二个注解@Scheduled
新建一个跑定时任务的类,里面写上方法,在方法上加上 @Scheduled 注解,然后写上每次定时任务执行的间隔时间。示例如下所示:
package com.yuhuofei.task;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Description
* @ClassName ScheduledTask
* @Author yuhuofei
* @Date 2022/8/24 21:22
* @Version 1.0
*/
@Service
public class ScheduledTask {
//cron表达式
//秒 分 时 日 月 周几
//下面的语句表示每隔10秒执行一次
@Scheduled(cron = "*/10 * * * * ?")
public void printHello() {
System.out.println("hello,你好呀!现在的时间是:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}
测试结果
每隔 10 秒钟执行一次定时任务,结果如下:
注意点
使用上面的方式处理定时任务,需要注意的点就是 cron 表达式怎么写的问题。
不过这种也很简单,直接网上搜一搜,然后把表达式拼出来就解决了,不难!