在编写Spring Boot应用中经常会遇到这样的场景,比如:需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。这样就需要使用到Spring Boot的定时任务了。
创建定时任务
在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。
在Spring Boot的主类中加入@EnableScheduling
注解,启用定时任务的配置
1 |
|
创建定时任务实现类
1 |
|
运行程序,控制台中就可以看到输出了,定时任务开始正常运作了。
@Scheduled详解
在上面的入门例子中,使用了@Scheduled(fixedRate = 5000)
注解来定义每过5秒执行的任务。
对于@Scheduled
的使用,从源码里看看有哪些配置:
1 | ({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) |
这些具体配置信息的含义如下:
cron
:通过cron
表达式来配置执行规则zone
:cron表达式解析时使用的时区fixedDelay
:上一次执行结束到下一次执行开始的间隔时间(单位:ms)fixedDelayString
:上一次任务执行结束到下一次执行开始的间隔时间,使用java.time.Duration#parse
解析fixedRate
:以固定间隔执行任务,即上一次任务执行开始到下一次执行开始的间隔时间(单位:ms),若在调度任务执行时,上一次任务还未执行完毕,会加入worker队列,等待上一次执行完成后立即执行下一次任务fixedRateString
:与fixedRate
逻辑一致,只是使用java.time.Duration#parse
解析initialDelay
:首次任务执行的延迟时间initialDelayString
:首次任务执行的延迟时间,使用java.time.Duration#parse
解析