SpringBoot整合SpringTask如何实现定时任务功能?
这篇文章将为大家详细讲解有关SpringBoot整合SpringTask如何实现定时任务功能?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Cron表达式
Cron表达式是一个字符串,包括6~7个时间元素,在SpringTask中可以用于指定任务的执行时间。
Cron的语法格式
Seconds Minutes Hours DayofMonth Month DayofWeek
Cron格式中每个时间元素的说明
时间元素 可出现的字符 有效数值范围Seconds , - * / 0-59Minutes , - * / 0-59Hours , - * / 0-23DayofMonth, - * / ? L W 0-31Month , - * / 1-12DayofWeek , - * / ? L # 1-7或SUN-SAT
Cron格式中特殊字符说明
字符作用举例
,列出枚举值在Minutes域使用5,10,表示在5分和10分各触发一次
-表示触发范围在Minutes域使用5-10,表示从5分到10分钟每分钟触发一次
*匹配任意值在Minutes域使用*, 表示每分钟都会触发一次
/起始时间开始触发,每隔固定时间触发一次在Minutes域使用5/10,表示5分时触发一次,每10分钟再触发一次
?在DayofMonth和DayofWeek中,用于匹配任意值在DayofMonth域使用?,表示每天都触发一次
#在DayofMonth中,确定第几个星期几1#3表示第三个星期日
L表示最后在DayofWeek中使用5L,表示在最后一个星期四触发
W表示有效工作日(周一到周五)在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日4日触发一次
整合SpringTask
由于SpringTask已经存在于Spring框架中,所以无需添加依赖。
配置SpringTaskConfig类
只需要在配置类中添加一个@EnableScheduling注解即可开启SpringTask的定时任务能力。
@Configuration@EnableSchedulingpublic class SpringTaskConfig {}
添加CallPaySpringTask类来执行定时任务
package ltd.hanzo.mall.task;import lombok.extern.slf4j.Slf4j;import ltd.hanzo.mall.service.TaskService;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;import javax.annotation.Resource;/** * @Author 皓宇QAQ * @email 2469653218@qq.com * @Date 2020/5/19 23:33 * @link https://github.com/Tianhaoy/hanzomall * @Description: 每天定时扫描订单 未支付状态的单子发送邮件提醒支付 */@Slf4j@Componentpublic class CallPaySpringTask { @Resource private TaskService taskService; /** * cron表达式:Seconds Minutes Hours DayOfMonth Month DayOfWeek [Year] */ @Scheduled(cron = "0 0 5 * * ?") private void callPay() { log.info("通过SpringTask开始批量发送待支付订单邮件提醒");//这里调用自己的定时任务接口--我这里调用的是发送待支付订单邮件的接口 taskService.callPayOrders(); }}
关于SpringBoot整合SpringTask如何实现定时任务功能?就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。