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

半藏商城中会有一些用户提交了订单但是一直没有支付的情况,之前我是通过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)

相关推荐

  • springboot整合quartz实现定时任务示例

    在做项目时有时候会有定时器任务的功能,比如某某时间应该做什么,多少秒应该怎么样之类的. spring支持多种定时任务的实现.我们来介绍下使用spring的定时器和使用quartz定时器 1.我们使用spring-boot作为基础框架,其理念为零配置文件,所有的配置都是基于注解和暴露bean的方式. 2.使用spring的定时器: spring自带支持定时器的任务实现.其可通过简单配置来使用到简单的定时任务. @Component @Configurable @EnableScheduling p

  • SpringBoot整合定时任务之实现Scheduled注解的过程(一个注解全解决)

    目录 一.使用场景 二.准备工作 三.开始搭建配置配置启动项 四.结果展示 五.总结 一.使用场景 定时任务在开发中还是比较常见的,比如:定时发送邮件,定时发送信息,定时更新资源,定时更新数据等等... 二.准备工作 在Spring Boot程序中不需要引入其他Maven依赖 (因为spring-boot-starter-web传递依赖了spring-context模块) <dependency> <groupId>org.springframework.boot</grou

  • SpringBoot中使用@Scheduled注解创建定时任务的实现

    在项目日常开发过程中,经常需要定时任务来帮我们做一些工作,如清理日志.定时任务的实现方法主要有 Timer.Quartz 以及 elastic-job Timer 实现定时任务 只执行一次的定时任务 Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { System.out.println("2000毫米后执行一次."); } }, 2000); timer.s

  • springboot整合Quartz实现动态配置定时任务的方法

    前言 在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能. 一.新建一个springboot工程,并添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency

  • Springboot定时任务Scheduled重复执行操作

    今天用scheduled写定时任务的时候发现定时任务一秒重复执行一次,而我的cron表达式为 * 0/2 * * * * . 在源码调试的过程中,发现是我的定时任务执行过程太短导致的. 于是我另外写了个简单的定时任务 @Component public class TestJob { @Scheduled(cron = "* 0/2 * * * *") public void test() { System.out.println("测试开始"); System.o

  • SpringBoot如何动态修改Scheduled(系统启动默认执行,动态修改)

    SpringBoot 动态修改Scheduled 场景: 可配置的 Scheduled 执行时间,正常的 Scheduled 是在项目启动的时候固定死的,没办法根据调用后台代码自动更新 Scheduled 执行时间 例如: 系统启动 读取时间 Cron : 0 0 3 * * ? ,通过执行后台方法 可以动态配置 Cron 时间格式,并且清楚掉原本执行任务,执行新的设置定时任务时间 1.根据 ThreadPoolTaskScheduler .ScheduledFuture 类 动态修改定时任务(

  • 详解SpringBoot开发案例之整合定时任务(Scheduled)

    来来来小伙伴们,基于上篇的邮件服务,定时任务就不单独分项目了,天然整合进了邮件服务中. 不知道,大家在工作之中,经常会用到那些定时任务去执行特定的业务,这里列举一下我在工作中曾经使用到的几种实现. 任务介绍 Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.Timer的优点在于简单易用:缺点是Timer的所有任务都是由同一个线程调度的,因此所有任务都是串行执行的.同一时间只能有一个任务在执行,前一个任务的延迟或异常都将会影响到之后的任

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

    半藏商城中会有一些用户提交了订单但是一直没有支付的情况,之前我是通过quartz定时任务每天的5点扫描未支付订单然后读取用户的邮箱地址发送邮件提醒用户尽快支付.这次我是采用Spring中自带的SpringTask来进行定时任务. Cron表达式 Cron表达式是一个字符串,包括6~7个时间元素,在SpringTask中可以用于指定任务的执行时间. Cron的语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek Cron格式中每个时间元素的说明

  • SpringBoot整合SpringTask实现定时任务

    半藏商城中会有一些用户提交了订单但是一直没有支付的情况,之前我是通过quartz定时任务每天的5点扫描未支付订单然后读取用户的邮箱地址发送邮件提醒用户尽快支付.这次我是采用Spring中自带的SpringTask来进行定时任务. Cron表达式 Cron表达式是一个字符串,包括6~7个时间元素,在SpringTask中可以用于指定任务的执行时间. Cron的语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek Cron格式中每个时间元素的说明

  • SpringBoot整合Xxl-job实现定时任务的全过程

    目录 前言 一.部署调度中心 1.项目下载 2.初始化数据 3.修改properties配置文件 二.部署SpringBoot项目 1.引入依赖 2.创建配置类 3.修改配置文件 4.创建执行器 5.启动SpringBoot项目 三.通过调度中心进行任务调度 1.添加执行器 2.添加任务 3.任务调度中心发起任务调度 四.小结 总结 前言 ​ XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 如果是单机

  • SpringBoot整合Quartz实现定时任务详解

    目录 Quartz简介 核心概念 Scheduler JobDetail Job Trigger SpringBoot整合Quartz 准备数据库表 Maven相关依赖 配置文件 quartz配置类 创建任务类 创建监听类 运行结果 Quartz简介 Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.它有很多特征,如:数据库支持,集群,插件,EJB

  • Springboot整合JPA配置多数据源流程详解

    目录 1. Maven 2. 基本配置 DataSource 3. 多数据源配置 3.1 JpaConfigOracle 3.2 JpaConfigMysql 4. Dao层接口 1. Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

  • SpringBoot整合Mybatis与druid实现流程详解

    目录 SpringBoot整合junit SpringBoot整合junit SpringBoot整合junit的classes SpringBoot整合Mybatis 整合前的准备 整合Mybatis SpringBoot 整合druid 配置前置知识小点 整合druid SpringBoot整合junit SpringBoot整合junit ①还是一样,我们首先创建一个SpringBoot模块. 由于我们并不测试前端,而只是整合junit,所以不用选择模板,选择其中的web即可. 完成以后我

  • mall整合SpringTask实现定时任务的方法示例

    摘要 本文主要讲解mall整合SpringTask的过程,以批量修改超时订单为例.SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用.Cron表达式是一个字符串,包括6~7个时间元素,在SpringTask中可以用于指定任务的执行时间. 项目使用框架介绍 SpringTask SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用. Cron表达式 Cr

  • Springboot整合camunda+mysql的集成流程分析

    一.创建springboot工程 使用IDEA工具,选择File->New->Project,选择Spring Initialzr 输入springboot工程基本信息,本示例命名为"camunda-demo1", jdk版本选择8 在选择springboot组件的时候,需要选择Spring Web.JDBC API.MySql Driver 这三个组件.点击下一步完成即可. 二.修改maven配置 2.1.修改springboot版本号 由于camunda版本与sprin

  • SpringBoot 整合 Quartz 定时任务框架详解

    目录 前言 一.简单聊一聊 Quartz 1.1.Quartz 概念 二.SpringBoot 使用 Quartz 2.1.基本步骤 2.2.执行 Quartz 需要的SQL文件 2.3.Controller 2.4.Service 划重点 2.5.实体类 2.6.简单的 Job 案例 2.7.那么该如何使用呢? 前言 在选择技术栈之前,一定要先明确一件事情,你真的需要用它吗?还有其他方式可以使用吗? 相比其他技术技术,优点在哪里呢?使用了之后的利与弊等等. 写这个主要是因为一直想写一下定时任务

随机推荐