Springboot 定时任务
在项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候,分析前一天的日志信息。 Spring 为我们提供了异步执行任务调度的方式,提供了 、 接口。
其实在 Springboot 中使用定时任务非常简单,只需要用到两个注解即可。
标注在需要开启定时任务的方法上
标注在 springboot 的主启动类上,用于开启基于注解的定时任务
下面看下示例代码:
/**
* springboot 主启动类
*/
@EnableScheduling
@SpringBootApplication // 开启基于注解的定时任务
public class SpringbootAmqpApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootAmqpApplication.class, args);
}
}
//-----------------------------------------------------------------------------------
/**
* 测试 springboot 定时任务
* @auther hepingfly
* @date 2020/9/21 11:52 下午
*/
@Service
public class ScheduledService {
/**
* 秒 分 时 日 月 周几
* 0 * * * * MON-FRI
* 上面就表示周一到周五,每分钟的第 0 秒开始执行
*/
@Scheduled(cron = "0 * * * * MON-FRI") //这样每分钟都会运行一次这个方法
public void attention() {
System.out.println("欢迎关注 hepingfly");
}
}
再说一下这个 cron 表达式可以写哪些东西:


① 0 * * * * MON-FRI 这个表示周一到周五,每分钟的第 0 秒开始执行
② 0,1,2,3 * * * * MON-FRI 这个表示周一到周五,每分钟的第 0,1,2,3 秒开始执行
③ 0-3 * * * * MON-FRI 表示含义与第 ② 种相同
④ 0/4 * * * * MON-FRI 这个表示周一到周五,每 4 秒执行一次
⑤ 0 0/5 14,18 * * ? 这个表示每天 14 点整和 18 点整,每隔 5 分钟执行一次
⑥ 0 15 10 ? * 1-6 这个表示每个月的周一至周六 10:15 分执行一次
⑦ 0 0 2 ? * 6 L 每个月的最后一个周六凌晨 2 点执行一次
⑧ 0 0 2 LW * ? 每个月的最后一个工作日凌晨 2 点执行一次
⑨ 0 0 2-4 ? * 1#1 每个月的第一个周一凌晨 2 点到 4 点之间,每个整点都执行一次