SpringBoot系列-quartz整合
SpringBoot整合Quartz教程
从今天起,撸起袖子跟着我加油干
提示:如有疑问请私信联系、下方有源代码地址,请自行拿取
前言
使用Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以。
提示:以下是本篇文章正文内容,下面案例可供参考
一、技术介绍
1.Quartz是什么?
Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。
Quartz 允许程序开发人员根据时间的间隔来调度作业。
Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。
二、使用步骤
1.引入maven库
代码如下(示例):
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
</dependencies>
2.Quartz具体使用示例
IJob接口类:
package com.hyh.quartz;
/**
* IJOB接口
*
* @Author: heyuhua
* @Date: 2021/1/11 14:54
*/
public interface IJob {
/**
* 开始任务
*
* @param name
* @param group
* @param cron
* @param clazz
*/
void start(String name, String group, String cron, Class clazz);
/**
* 修改任务
*
* @param name
* @param group
* @param time
* @return
*/
boolean modify(String name, String group, String time);
/**
* 暂停
*
* @param name
* @param group
*/
void stop(String name, String group);
/**
* 暂停所有
*/
void stopAll();
/**
* 恢复任务
*
* @param name
* @param group
*/
void resume(String name, String group);
/**
* 恢复所有
*/
void resumeAll();
/**
* 删除任务
*
* @param name
* @param group
*/
void delete(String name, String group);
}
Job接口类:
package com.hyh.quartz.service;
import com.hyh.quartz.IJob;
/**
* job 接口
*
* @Author: heyuhua
* @Date: 2021/1/11 14:46
*/
public interface JobService extends IJob {
/**
* 获取任务信息
*
* @param name
* @param group
* @return
*/
String get(String name, String group);
}
Job接口实现类:
package com.hyh.quartz.service.impl;
import com.hyh.quartz.service.JobService;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* @Author: heyuhua
* @Date: 2021/1/11 14:55
*/
@Service
public class JobServiceImpl implements JobService {
/**
* 日志
*/
private static final Logger LOG = LoggerFactory.getLogger(JobServiceImpl.class);
/**
* 任务调度
*/
@Autowired
private Scheduler scheduler;
@Override
public void start(String name, String group, String cron, Class clazz) {
try {
// 通过JobBuilder构建JobDetail实例,JobDetail规定只能是实现Job接口的实例
// JobDetail 是具体Job实例
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(name, group).build(