SpringBoot依赖之Quartz Scheduler定时调度器

news2024/11/22 14:20:55

Quartz Scheduler

  • 依赖名称: Quartz Scheduler
  • 功能描述: Schedule jobs using Quartz.
  • 使用 Quartz 安排作业。
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>

在 IntelliJ IDEA 中创建 Spring Boot 项目并使用 Quartz Scheduler,可以选择使用 MySQL 数据库或不使用数据库。为快速了解 Quartz Scheduler,下面先介绍不使用数据库的情况。

目前文章中的示例代码已经可以下载。
·开源代码
中 SpringBoot版本为3.3.2,JDK版本为17。

创建 Spring Boot 项目

  1. 打开 IntelliJ IDEA:
    启动 IntelliJ IDEA,点击 “Create New Project”。

  2. 选择 Spring Initializr:
    在项目向导中选择 “Spring Initializr”,然后点击 “Next”。

  3. 填写项目基本信息:

    • Group: 例如 com.dependencies
    • Artifact: 例如 quartz-scheduler
    • Name: 例如 quartz-scheduler
    • Description: 例如 Demo project for Quartz Scheduler
    • Package: 例如 com.dependencies.quartzscheduler
    • Packaging: 选择 Jar
    • Java Version: 选择你要使用的 Java 版本,例如 17
  4. 添加依赖:
    在 “Dependencies” 部分,添加以下依赖:

    • Spring Web (Web)
    • Spring Boot Starter Quartz (添加 Quartz Scheduler 的支持)
  5. 完成项目设置:
    点击 “Next” 然后点击 “Finish” 创建项目。

配置 Quartz Scheduler

使用 MySQL 数据库
  1. 配置 application.properties:
    src/main/resources/application.properties 文件中添加 MySQL 数据库的配置:

    spring.application.name=quartz-scheduler
    
    spring.quartz.job-store-type=memory
    
  2. 创建 Quartz 配置类:
    com.example.quartzdemo 包中创建一个新的类 QuartzConfig,并添加以下代码:

    package com.dependencies.quartzscheduler;
    
    import org.quartz.JobDetail;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.quartz.JobDetailFactoryBean;
    import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
    
    /**
     * @author zhizhou   2024/8/6 23:10
     */
    @Configuration
    public class QuartzConfig {
        @Bean
        public JobDetailFactoryBean jobDetail() {
            JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
            jobDetailFactory.setJobClass(SampleJob.class);
            jobDetailFactory.setDescription("Invoke Sample Job service...");
            jobDetailFactory.setDurability(true);
            return jobDetailFactory;
        }
        
        @Bean
        public SimpleTriggerFactoryBean trigger(JobDetail jobDetail) {
            SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
            trigger.setJobDetail(jobDetail);
            trigger.setRepeatInterval(3000);  // 3秒钟间隔
            //trigger.setRepeatCount(SimpleTriggerFactoryBean.OBJECT_TYPE_ATTRIBUTE.);//REPEAT_INDEFINITELY
            return trigger;
        }
    }
    
  3. 创建 SampleJob 类:
    com.dependencies.quartzscheduler 包中创建一个新的类 SampleJob`,并添加以下代码:

    package com.dependencies.quartzscheduler;
    
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    /**
     * @author zhizhou   2024/8/6 23:11
     */
    @Component
    public class SampleJob implements Job {
        
        private static final Logger logger = LoggerFactory.getLogger(SampleJob.class);
        
        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            logger.info("Sample Job executed"+new Date());
        }
    }
    

在这里插入图片描述

目前文章中的示例代码已经可以下载。
开源代码
中 SpringBoot版本为3.3.2,JDK版本为17。

运行项目

  1. 启动 Spring Boot 应用程序:
    在 com.dependencies.quartzscheduler 包中找到 QuartzSchedulerApplication 类(由 Spring Initializr 自动生成),运行它。

  2. 查看日志输出:
    启动后,每分钟你应该能在控制台日志中看到 “Sample Job executed” 的输出。

总结

通过以上步骤,在 我们已经在lliJ IDEA 中创建一个 Spring Boot 项目并配置 Quartz Scheduler。后面学习时可以自行尝试选择 MySQL 数据库或不使用数据库。使用数据库时,需要在 application.properties 文件中配置数据库连接信息;不使用数据库时,可以配置 Quartz 以使用内存存储。
如有需要可以私信,关注我我会第一时间给予帮助,一起学习。

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

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

相关文章

论文笔记: 视频关键帧抽取相关工作

2024-08-06&#xff0c;星期二&#xff0c;北京&#xff0c;晴 今天来看视频关键帧抽取主题。随着最近Sora文生视频的火热&#xff0c;视频相关的数据获得逐渐变得重要起来。这也就涉及到提取视频关键帧的问题。 从文本生成视频&#xff0c;我们拆分来看&#xff0c;一般流程…

泳泳馆押金原路退回系统,一键操作秒到账 押金+手牌+电子押金单

一、游泳馆手牌收押金必要性 游泳馆手牌收押金有以下必要性&#xff1a; 1. 防止手牌丢失&#xff1a;手牌是顾客在游泳馆内存储个人物品和进出更衣室的重要凭证。收押金可以让顾客更加重视手牌&#xff0c;降低丢失的概率。比如说&#xff0c;有的顾客可能会因为粗心大意随手…

用Python进行数据可视化——seaborn库详解

内容&#xff1a; 安装和导入Seaborn使用Seaborn创建基本图形了解Seaborn的默认数据集 代码&#xff1a; # 安装和导入Seaborn !pip install seaborn import seaborn as sns import matplotlib.pyplot as plt# 使用Seaborn创建基本图形 tips sns.load_dataset("tips&q…

python库(19):flashtext库实现高效文本查找与替换

1 FlashText简介 FlashText 是一个用于高效查找和替换关键词的 Python 库。它的优势在于能够在 O(n) 时间复杂度内完成任务&#xff0c;而不是像正则表达式那样需要 O(m*n) 的时间复杂度。FlashText 使用 Aho-Corasick 自动机算法&#xff0c;在大量关键词匹配时表现尤为出色。…

【Python机器学习】非均衡分类问题

在大多数情况下不同类比的分类代价并不相等。 分类性能度量指标&#xff1a;正确率、召回率及ROC曲线 通常情况下&#xff0c;我们可以基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上&#xff0c;这样的度量错误掩盖了样例如何被…

image.convert()函数转换格式及显示图像的RGB三通道图像

引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图&#xff0c;多通道图像有三通道24位真彩色RGB图&#xff0c;8位伪彩色图像&#xff0c;YCbCr图像等。本文先介绍各种格式图像的特点&#xff0c;随后讲…

c++初阶-----STL---list

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

playwrite今日头条自动发帖

目的 大家好&#xff0c;我是watchpoints &#xff0c;一个只为自己打工程序员&#xff0c; watchpoints是我github用户名 &#xff0c;也是我的wechat 用户名&#xff0c; 每天看新闻浪费大量时间&#xff0c;写一个程序 自动提醒你21点远离手机 python实现 步骤1:自动登录 # …

在 Linux 9 上安装 Oracle 19c:克服兼容性问题 (INS-08101)

Oracle 数据库 19c 的基础版本 (19.3) 发布的时候还没有 Linux 9 &#xff0c;因此在Linux 9上面安装Oracle 19c会遇到很多兼容性问题。本文将探讨如何解决这些问题。 安装步骤 设置环境变量以绕过操作系统检查&#xff1a; Oracle 19.3 安装程序无法识别 Linux 9。 [WARNIN…

sql二次注入实战--2018年网顶杯

网址&#xff1a;BUUCTF在线评测 (buuoj.cn) 当我们进入后显示这个页面&#xff1a; 当我们第一次点击发帖的时候就会跳转到登陆页面&#xff0c;上面有提示&#xff0c;告诉我们账号为zhangwei,密码为zhangwei***&#xff1a; 这里我们可以使用bp抓包工具来进行暴力破解密码&…

《剑来》语句摘录(十二)

◆ 第二百零三章 休要略过不提 >> 怨怼与仇恨是快刀斩乱麻&#xff0c;一往无前。金铁相错&#xff0c;激起的火星&#xff0c;就是大丈夫的恩怨分明。无非敢作敢当。 愧疚和遗憾却是一把钝刀&#xff0c;刀刃上边的缺口&#xff0c;皆是曾经犯过的错误。关门磨刀即是后悔…

LVS四层架构部署

LVS四层架构部署 LVS集群的类型 lvs-nat&#xff1a; 修改请求报文的目标IP,多目标IP的DNATlvs-dr&#xff1a; 操纵封装新的MAC地址lvs-tun&#xff1a; 在原请求IP报文之外新加一个IP首部lvs-fullnat&#xff1a; 修改请求报文的源和目标IP LVS-NAT 工作流程 可以理解na…

主从备份(复制)

一、备份的三种类型 备份的三种主要类型包括热备份、逻辑备份和物理备份&#xff0c;每种备份类型都有其特定的应用场景和优缺点。 1. 热备份 定义&#xff1a; 热备份是在数据库或系统处于正常运行状态下进行的备份。这种备份方式允许在不停机的情况下对数据库或系统数据进…

用Python构建一个简单的神经网络

准备工作 首先我们需要使用到vscode 在终端 窗口下输入安装&#xff1a;pip3 install tensorflow pandas numpy keras 代码编写 导入库 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import panda…

PyTorch深度学习实战(3)—— 小试牛刀:CIFAR-10分类

下面尝试从零搭建一个PyTorch模型来完成CIFAR-10数据集上的图像分类任务&#xff0c;步骤如下。 &#xff08;1&#xff09;使用torchvision加载并预处理CIFAR-10数据集。 &#xff08;2&#xff09;定义网络。 &#xff08;3&#xff09;定义损失函数和优化器。 &#xff08;4…

面向服务架构(SOA)介绍

在汽车电子电气架构还处于分布式时代时&#xff0c;汽车软件的开发方式主要是采用嵌入式软件进行开发&#xff0c;而随着汽车智能化程度的加深&#xff0c;更加复杂且多样的功能需求让汽车软件在复杂度上再上一层。在整车的自动驾驶方面&#xff0c;由于未来高阶自动驾驶能力的…

JavaScript constructor原型原型继承

constructor 在 JavaScript 中&#xff0c;构造函数是一种特殊的函数&#xff0c;使用 new 关键字来调用&#xff0c;用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。 例如&#xff1a; function Person(name, age) {this.name name;this.age a…

C语言预处理:开启编程新境界

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 预处理符号 在C语言中&#xff0c;我们可以通过一些预定义符号查看文件的…

vue中post请求返回二进制流文件下载

1 .调用接口返回的如下图所示,此时看到是一个流文件 2.不管是get请求还是post请求都需要加上 下面这行代码 responseType: "blob", 3.我们自行二次封装的axios可能会导致乱码现象,建议直接用axios调用接口请求 4.关于Excel导出 POI 响应头设置 Content-Type: applica…

Tomcat高可用集群(实例详解)

一.环境准备 虚拟机的版本&#xff1a;VMware-workstation-full-15.5.6-16341506.exe系统镜像版本&#xff1a;CentOS-6.10-x86_64-bin-DVD1.iso&#xff0c;全新安装&#xff0c;桌面版&#xff0c;可上网系统内存大小&#xff1a;1GB系统硬盘大小&#xff1a;20GB连接工具版…