IEDA基于Spring Boot项目服务搭建QuartzJobBean实现定时任务调度(包含服务目录结构)详解
文章目录
前言
Spring Boot是由Pivotal团队(Spring项目组)提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,在实际的工作当中,经常要用到定时去操作一下任务,例如:数据的定时备份,用户的定时短信发送,定时刷新缓存等等。下面介绍实现任务调度的方式。
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是QuartzJobBean任务调度?
QuartzJobBean是一个定时器的基础类,在SpringBoot项目中要是想实现通过定时任务去执行一些任务,就要通过QuartzJobBean配置配去实现(不唯一)。
二、创建项目包含项目结构
1.创建新的项目
点击 + Create New Project 创建新的项目
选中1、Spring Initializr 2、 钩住Default
然后点击 Next
Group:项目坐标
Artifact: 注册中心服务的项目名称
然后点击 Next
选择SpringBoot版本,涉及你引入的依赖版本否则会报错。
添加操作数据库的依赖,MySQL驱动依赖、JPA依赖
然后点击 Finish
项目创建成功
1.项目配置Maven
点击 File ----> Settings
配置Maven:File —> Settings —> Build, Execution, Deployment —> Build Tools —> Maven
User settings file:你maven服务的conf文件夹的settings.xml文件
Local repository:本地仓库的路径(存放从中央仓库、阿里云镜像下载的Jar包)
三、代码实现任务调度
项目结构图
1、第一步 导入依赖
如果SpringBoot版本是2.0.0以后的,则在spring-boot-starter中已经包含了quart的依赖,则可以直接使用spring-boot-starter-quartz依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
如果是1.5.9则要使用以下添加依赖:
<!--quzrtz任务调度 核心包-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<!--工具包 可有可无-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.2</version>
</dependency>
2、第二步 创建配置类
创建JobConfiguration配置类,加载Bean或者通过Spring.xml中去配置装入Bean管理。
package com.job.config;
import com.job.comm.yewuDataSyncJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author Mr.Zhx
* @version 1.0
* @program: zhxjob
* @description: 定时任务配置类
* @create: 2021-12-24 12:53
*/
@Configuration
public class JobConfiguration {
private static final int TIME = 5; // 更新频率 5秒
// JobDetail
@Bean
public JobDetail weatherDataSyncJobDetail() {
return JobBuilder.newJob(yewuDataSyncJob.class).withIdentity("yewuDataSyncJob")
.storeDurably().build();
}
// Trigger
@Bean
public Trigger weatherDataSyncTrigger() {
SimpleScheduleBuilder schedBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(TIME).repeatForever();
return TriggerBuilder.newTrigger().forJob(weatherDataSyncJobDetail())
.withIdentity("weatherDataSyncTrigger").withSchedule(schedBuilder).build();
}
}
3、第三步 创建业务逻辑执行类
创建yewuDataSyncJob业务类并继承QuartzJobBean,重写executeInternal()方法,在方法体写业务实现逻辑
package com.job.comm;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Mr.Zhx
* @version 1.0
* @program: zhxjob
* @description: 创建定时任务的类继承
* @create: 2021-12-24 12:49
*/
public class yewuDataSyncJob extends QuartzJobBean {
private final static Logger logger = LoggerFactory.getLogger(yewuDataSyncJob.class);
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//写你的业务逻辑
logger.info("***********************处理定时任务的业务逻辑 Start ***********************");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SSS'Z'");
String format1 = format.format(new Date());
System.out.println("小新新最帅!!当前系统时间:" + format1);
logger.info("***********************处理定时任务的业务逻辑 End ***********************");
}
}
4、第四步 启动项目验证
点击启动类
效果结果图
可以看到间隔5秒执行业务逻辑,你就可以实现数据备份、刷新缓存(Redis)、发送短信、定时查询等等业务。
cron表达式详解
时间 | 允许值范围 | 允许的特殊字符 |
---|---|---|
秒 | 0~59 | , - * / |
分 | 0~59 | , - * / |
小时 | 0~23 | , - * / |
日期 | 1-31 | , - * ? / L W C |
月份 | 1~12或者JAN-DEC | , - * / |
星期 | 1~7或者SUN-SAT | , - * ? / L C # |
年(可选) | 留空,1970~2099 | , - * / |
在线cron表达式生成:http://qqe2.com/cron/index
总结
如果你的项目当中要实现任务调度,以上代码融合到你的项目当中即可,然后根据你的业务你封装一下使用,避免代码过于臃肿,要学会灵活变通,避免代码侵入性过高。