转载

Spring Boot 实战之定时任务调度

本文阅读时间大约3分钟。

Spring Boot 实战之定时任务调度

在后端开发中,有些场景是需要使用定时任务的,例如: 定时同步一批数据、定时清理一些数据,在Spring Boot中提供了 @Scheduled 注解就提供了定时调度的功能,对于简单的、单机的调度方案是足够了的。 这篇文章准备用实际案例看下 @Scheduled 的用法。

开发实战

(1)新建Spring Boot工程,主pom文件内容如下:

Spring Boot 实战之定时任务调度

(2)新建定时任务组件,使用 @Scheduled 注解修饰要调度的方法,在该方法中会打印当前的时间。

Spring Boot 实战之定时任务调度

(3)在ScheduledemoApplication中开启定时调度能力——即开启 @Scheduled 注解的定时调度功能,并在系统刚起来的时候打印一行日志,用来体现上一步中的initialDelay的作用。

Spring Boot 实战之定时任务调度

(4)点 击运行后,该demo的运行结果如下,可以看出,23:15:35应用启动,过了10秒钟定时调度任务才开始执行,然后是每隔5秒钟打印一次时间。

Spring Boot 实战之定时任务调度

分析解释

我们一起来看下 @Scheduled 注解的源码,看看除了上面的例子里提供的案例,该注解还有哪些功能呢?

  • cron,可以支持更复杂的时间复杂度

  • zone,解析cron表达式的时候解析时区

  • fixedDelay(和fixedDelayString),两次调度之间需要加一个固定的延迟

  • fixedRate(和fixedRateString),没隔多久需要调度一次

  • initialDelay(和initialDelayString),第一次调度之前需要延迟多久

Spring Boot 实战之定时任务调度

参考资料

  1. https://spring.io/guides/gs/scheduling-tasks/

  2. 《Spring Boot实战》

Spring Boot 2.x系列

  1. Spring Boot实战之业务状态机

下方查看 历史 文章

Spring Boot实战之业务状态机

Mac高效开发之iTerm2、Prezto和Solarized主题

类加载器的双亲委派,看这篇就够了

彻底搞懂JVM类加载器:基本概念

本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。

Spring Boot 实战之定时任务调度

Spring Boot 实战之定时任务调度

原文  https://mp.weixin.qq.com/s/6lhSri-mrj8bgCVnZ7CAdA
正文到此结束
Loading...