Spring Boot整合Quartz框架

news2024/9/23 1:26:50

说明:Quartz是一个定时器框架,可以实现定时任务,本文介绍如何在Spring Boot项目中整合Quartz框架,Quartz介绍参看下面这篇文章:

  • 【Quartz】Quartz定时任务框架

创建Demo

首先,创建一个Spring Boot项目,pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/>
    </parent>

    <groupId>com.hezy</groupId>
    <artifactId>quartz_demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

引入quartz

在pom文件中,添加下面依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

引入依赖后就可以使用了,Spring Boot向来很方便。首先,创建一个定时任务,如下:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
 
public class SampleJob implements Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 你的业务逻辑
        System.out.println(System.currentTimeMillis() / 1000 + "===============定时任务开始执行了……");
    }
}

然后,创建定时任务的配置类,配置类配置定时任务的周期等信息,如下:

import com.hezy.job.SampleJob;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import static org.quartz.SimpleScheduleBuilder.simpleSchedule;

@Configuration
public class QuartzConfig {

    /**
     * 定义JobDetail,关联具体的Job
     */
    @Bean
    public JobDetail sampleJobDetail() {
        return JobBuilder.newJob(SampleJob.class)
                .withIdentity("sampleJob").storeDurably().build();
    }

    /**
     * 关联Trigger
     * 定时任务,每隔10秒执行一次
     */
    @Bean
    public Trigger sampleJobTrigger() {
        return TriggerBuilder.newTrigger().forJob(sampleJobDetail())
                .withIdentity("sampleTrigger")
                .withSchedule(simpleSchedule().repeatForever()
                        .withIntervalInSeconds(10))
                .build();
    }
}

执行,查看效果,如下:

在这里插入图片描述

可以看到,项目刚启动就立即执行了一次,往后每隔十秒执行一次。我想是否项目一启动就执行,应该有相关的配置可以设置的。

总结

本文介绍了如何在Spring Boot整合Quartz框架

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2054174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt Creator安装配置指南

1.官网下载在线安装包 官网地址&#xff1a; https://www.qt.io/download-dev#eval-form-modal 2.双击在线安装包按引导流程安装qt 3.选择自己要配置的qt环境版本 3.1如果要选中低版本的qt环境我这里安装的是qt5.15.2的(其他低版本也一样的)&#xff0c;要勾选上Archive(存…

拓展销售网络:立即领取企元数智小程序合规分销系统!

"拓展销售网络&#xff1a;立即领取企元数智小程序合规分销系统&#xff01;"企业的销售网络是企业成长和发展的关键&#xff0c;而企元数智小程序合规分销系统能帮助您快速拓展销售网络&#xff0c;实现销售业绩的持续增长。 通过领取企元数智小程序合规分销系统&am…

2024软件测试八股文【答案解析+文档】

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师…

Go语言导入gin包

访问https://pkg.go.dev/页面,输入gin 点击README&#xff0c;点击Getting started&#xff0c;点击Getting Gin。 以VSCode通过mod命令导入gin包为例 安装第三方库 go mod init go mod tidy运行成功创建go.mod文件 go get -u github.com/gin-gonic/gin创建Go项目&#xf…

养猫换毛季总结,希喂、小米宠物空气净化器功能测评,真实PK

猫咪作为小家中的一员&#xff0c;陪伴我们度过了非常多时光。而养猫一定会面临换毛季的问题&#xff0c;在换毛季期间&#xff0c;宠物会大量掉毛&#xff0c;不仅破坏家里的整洁&#xff0c;而且还可能被猫咪误吞&#xff0c;导致毛球症。这需要我们铲屎官选找到有效的清理毛…

Spring cloud alibaba(二)RibbonLoadBalance

一、负载均衡 其含义就是将负载&#xff08;工作任务&#xff09;进行平衡、分摊到多个操作单元上进行运行&#xff1b;&#xff08;就是客户端调用服务提供方时的如何调用多个实例的策略&#xff09; 1、主流负载均衡的方案 集中式负载均衡&#xff1a;在消费者和服务提供方中…

使用excalidraw搭建自己的中文手写画板

使用excalidraw搭建自己的中文手写画板 成品预览地址&#xff1a;https://guizimo.github.io/excalidraw/ 原excalidraw提供了英文的手写体&#xff0c;但中文还是正正方方的&#xff0c;感觉不搭。希望中文也可以有那样一种手写风格。 本文使用的是excalidraw&#xff0c;它…

ArchWsl 运行图形界面程序

最新的WSL2已经支持图形界面&#xff08;wslg&#xff09;了&#xff0c;这里教大家运行GUI应用&#xff08;桌面环境同理&#xff0c;但是我建议大家不要安装桌面环境&#xff0c;没有桌面环境也可以单独运行GUI应用&#xff09; 更新WSL 建议更新到最新版本&#xff0c;早期…

web实现drag拖拽布局

这种拖拽布局功能其实在电脑操作系统或者桌面应用里面是经常使用的基础功能&#xff0c;只是有时候在进行web开发的时候&#xff0c;对这个功能需求量不够明显&#xff0c;但却是很好用&#xff0c;也很实用。能够让用户自己拖拽布局&#xff0c;方便查看某个区域更多内容&…

【教学类-72-02】20240819建筑对称图纸02(图案最大化)

背景需求 【教学类-72-01】20240803建筑对称图纸01-CSDN博客文章浏览阅读423次&#xff0c;点赞13次&#xff0c;收藏5次。【教学类-72-01】20240803建筑对称图纸01https://blog.csdn.net/reasonsummer/article/details/140893003 我感觉房子有大有小&#xff0c;有大量空白&…

2、目标识别(颜色识别)

一、根据所使用的视觉模块的官方网站或软件&#xff0c;获取相应颜色的阈值 blue [(23, 74, -119, 19, -125, -29)] #蓝紫色 [(0, 53, -128, 127, -128, -8)] red [(0, 44, 40, 62, 16, 127)] #红色 [(0, 44, 40, 62, 16, 127)] org [(44, 100, 13, 126, 2…

【多线程开发 6】spring中的注解/API的线程问题

【多线程开发 6】spring中的注解/API的线程问题 2024年8月14日 文章目录 【多线程开发 6】spring中的注解/API的线程问题1 Future和CompletableFuture2 hutool的异步任务3 Async4 Schedule5 stream Parallel6 ForkJoinPool7 Transactional 除了Java自带默认线程池&#xff0c;…

mac本地搭建docker+k8s步骤

概览&#xff1a; * kubectl安装 * minikube安装 * dashboard安装 主机配置&#xff1a; * mac M2 &#xff08;arm架构&#xff09; 服务及版本概览&#xff1a; 服务名称版本 kubectl v1.29.2 Kubernetes v1.30.0 kicbase v0.0.44 dashboard v2.7.0 docker 26.…

Linux:进程概念

文章目录 进程概念1、冯诺依曼体系结构2、进程2.1基本概念2.2描述进程-PCB2.3组织进程2.4查看进程2.5通过系统调用获取进程标识符2.6通过系统调用创建进程-fork初识 进程概念 1、冯诺依曼体系结构 目前我们认识的计算机中&#xff0c;都是由一个个硬件构成 输入单元&#xff1…

c语言基础-------指针变量作为函数参数

指针变量作为函数参数 在 C 语言中&#xff0c;指针变量作为函数参数是一种常见的做法&#xff0c;它允许函数修改通过指针传递的变量。这是通过指针的地址传递实现的&#xff0c;而不是通过值传递。 指针作为函数参数的优点 修改原始数据&#xff1a;当函数接受一个指针作…

经典游戏,用java实现的坦克大战小游戏

今天给大家分享一个使用java编写的坦克大战小游戏&#xff0c;整体还是挺好玩的&#xff0c;通过对这款游戏的简单实现&#xff0c;加深对java基础的深刻理解。 一、设计思路 1.坦克大战小游戏通过java实现&#xff0c;其第一步需要先绘制每一关对应的地图&#xff0c;地图包括…

机器学习(5)--正则化之L1和L2正则化

文章目录 正则化一、正则化的基本原理二、L1正则化&#xff08;Lasso&#xff09;三、L2正则化&#xff08;Ridge&#xff09;四、L1与L2正则化的比较 总结 正则化 正则化是一种在机器学习和深度学习中常用的技术手段&#xff0c;旨在提高模型的泛化能力&#xff0c;减少过拟合…

深入探讨C语言中的高级指针操作

目录 指针与内存管理的高级技巧 1. 动态数组的重新分配 2. 内存碎片化的处理 3. 内存对齐 函数指针数组与回调函数的高级用法 1. 基本函数指针用法 2. 函数指针数组 3. 回调函数的使用 指针与数据结构的结合 1. 自定义链表 C语言以其强大的底层操作能力和高效的性能著…

【信创】Linux下EFI引导配置工具efibootmgr _ 统信 _ 麒麟 _ 方德

往期好文&#xff1a;deepin V23 Release 安装与功能介绍&#xff01;&#xff01;&#xff01; Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在信创操作系统上使用EFI引导管理器配置工具efibootmgr命令详解的文章。efibootmgr是一个在基于UEFI的系统中管理EF…

AI数字员工技能全开,招生、培训、写教案,样样都行

只需要几个AI数字员工&#xff0c;就可以协助您办一所高质量的学校。 教务管理、教师培训、招生咨询、家校沟通、学生评价、资料整理、学习伴侣、写教案、总结、学生评语等。 这些都可以用AI数字员工来完成。 比如&#xff0c;AI培训专员给教师做制度培训、教学培训&#xf…