写点什么

Springboot 定时任务

用户头像
hepingfly
关注
发布于: 2020 年 09 月 22 日
Springboot 定时任务

在项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候,分析前一天的日志信息。 Spring 为我们提供了异步执行任务调度的方式,提供了 TaskExecutorTaskScheduler 接口。



其实在 Springboot 中使用定时任务非常简单,只需要用到两个注解即可。



  • @Scheduled

  • 标注在需要开启定时任务的方法上

  • @EnableScheduling

  • 标注在 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 表达式可以写哪些东西:





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 点之间,每个整点都执行一次



发布于: 2020 年 09 月 22 日阅读数: 46
用户头像

hepingfly

关注

视频号:hepingfly 分享干货,欢迎关注~ 2018.06.23 加入

B站程序员。目标是做一个有才华,身上有光的男人。

评论

发布
暂无评论
Springboot 定时任务