SpringBoot整合SpringTask实现定时任务的流程

作者:皓宇QAQ 时间:2022-03-28 22:24:40 

半藏商城中会有一些用户提交了订单但是一直没有支付的情况,之前我是通过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定时任务发送邮件信息的流程就介绍完毕了,知识只有分享出来才有价值。如果有问题的话,可以在关于我的页面,通过我的邮箱联系我进行探讨。

来源:https://juejin.im/post/5ee230116fb9a047e4213d69

标签:SpringBoot,SpringTask,定时任务
0
投稿

猜你喜欢

  • SpringBoot过滤器与拦截 器深入分析实现方法

    2023-11-28 23:04:15
  • 详解Java中的三种流程控制语句

    2023-11-04 17:06:34
  • 解析springboot整合谷歌开源缓存框架Guava Cache原理

    2023-11-07 13:24:23
  • Mybatis接口式编程的原理

    2023-11-27 22:16:05
  • 使用java从乱码文本中解析出正确的文本

    2023-12-03 12:10:22
  • 一文搞懂Java创建线程的五种方法

    2023-10-30 18:35:04
  • MyBatis-Plus多表联查(动态查询)的项目实践

    2023-11-19 21:43:17
  • 利用Java读取二进制文件实例详解

    2023-07-27 03:25:42
  • 彻底掌握C语言strcpy函数的用法

    2023-07-03 07:21:18
  • 详解Java Synchronized的实现原理

    2023-11-25 06:04:53
  • Android 动画之TranslateAnimation应用详解

    2023-06-27 06:17:59
  • java分页工具类的使用方法

    2023-08-17 02:00:14
  • Java栈之链式栈存储结构的实现代码

    2022-01-18 09:38:48
  • Java实现图片验证码具体代码

    2021-06-30 13:16:35
  • 详细解读JAVA多线程实现的三种方式

    2022-01-14 04:35:31
  • Java8中对于LocalDateTime的序列化和反序列化问题

    2023-11-14 15:37:41
  • mybatis原理概述入门教程

    2023-10-08 13:10:57
  • Spring Security基本原理详解

    2022-12-24 15:57:54
  • Java SSH 秘钥连接mysql数据库的方法

    2022-07-11 21:23:18
  • 分布式医疗挂号系统SpringCache与Redis为数据字典添加缓存

    2023-06-28 02:26:55
  • asp之家 软件编程 m.aspxhome.com