SpringBoot整合SpringTask实现定时任务

前因

温馨提醒:阅读本文需要6分钟

半藏商城中会有一些用户提交了订单但是一直没有支付的情况,之前我是通过quartz定时任务每天的5点扫描未支付订单然后读取用户的邮箱地址发送邮件提醒用户尽快支付。这次我是采用Spring中自带的SpringTask来进行定时任务。

Cron表达式

Cron表达式是一个字符串,包括6~7个时间元素,在SpringTask中可以用于指定任务的执行时间。

Cron的语法格式

Seconds Minutes Hours DayofMonth Month DayofWeek

Cron格式中每个时间元素的说明

时间元素  可出现的字符   有效数值范围
Seconds   , - * /        0-59
Minutes   , - * /        0-59
Hours     , - * /        0-23
DayofMonth, - * / ? L W  0-31
Month     , - * /        1-12
DayofWeek , - * / ? 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
@EnableScheduling
public 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
@Component
public 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();
    }
}

还有一些查找订单信息的service层 mapper层代码就不贴出了,根据自己的业务进行开发就可以。主要是分享流程,代码实现并不难。

小结

到此为止,整个通过SpringTask定时任务发送邮件信息的流程就介绍完毕了,知识只有分享出来才有价值。如果有问题的话,可以在关于我的页面,通过我的邮箱联系我进行探讨。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值