IEDA基于Spring Boot项目服务搭建QuartzJobBean实现定时任务调度(包含服务目录结构)详解

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


总结

如果你的项目当中要实现任务调度,以上代码融合到你的项目当中即可,然后根据你的业务你封装一下使用,避免代码过于臃肿,要学会灵活变通,避免代码侵入性过高。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰太狼RD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值