【SpringBoot】廿五、SpringBoot中使用Quartz管理定时任务
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【SpringBoot】廿五、SpringBoot中使用Quartz管理定
时任务
2020-07-21 15:55:47
定时任务在系统中用到的地方很多,例如每晚凌晨的数据备份,每小时获取第三方平台的Token 信息等等,之前我们都是在项目中规定这个定时任务什么时候启动,到时间了便会自己启动,那么我们想要停止这个定时任务的时候,就需要去改动代码,还得启停服务器,这是非常不友好的事情
直至遇见 Quartz,利用图形界面可视化管理定时任务,使得我们对定时任务的管
理更加方便,快捷
一、Quartz 简介
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和
J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个
作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB作业预构建,JavaMail及其它,支持cron-like表达式等等。
二、开发前戏
1、引入 maven 依赖
这里引入了 web 的依赖,以及 Quartz 的依赖,其余依赖请根据需求自行引入
2、创建数据表
数据模型:
SQL语句:
drop table if exists sys_quartz;
/*==============================================================*/
/* Table: sys_quartz */
/*==============================================================*/ create table sys_quartz
(
id bigint(20) not null auto_increment comment '主键id',
class_name varchar(32) comment '任务类名',
cron_expression varchar(32) comment 'cron表达式',
param varchar(32) comment '参数',
descript varchar(11) comment '描述',
quartz_status varchar(255) comment '启动状态(0--启动1--停止)', create_time datetime comment '创建时间',
create_user bigint(20) comment '创建人',
status tinyint(1) default 0 comment '状态(0--正常1--停用)',
del_flag tinyint(1) default 0 comment '删除状态(0,正常,1已删除)',
primary key (id)
)
type = InnoDB;
alter table sys_quartz comment '定时任务信息表';
三、开发进行中
1、创建实体类
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import mon.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
*
* 定时任务信息表
*
*
* @author lizhou
* @since 2020-07-21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_quartz")
@ApiModel(value="SysQuartz对象", description="定时任务信息表")
public class SysQuartz extends Model
@ApiModelProperty(value = "主键id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "任务类名")
@TableField("class_name")
private String className;
@ApiModelProperty(value = "cron表达式")