Spring boot实现定时任务一:集成Quartz

Spring boot集成Quartz实现定时任务


Quartz官方文档

1.Quartz介绍

  • Quartz 是一个功能丰富的开源作业调度库,它由 Java 写成,可以集成在任何 Java 应用程序中,包括 Java SE 和 Java EE 等。

  • 使用 Quartz 可以创建简单或者复杂的执行计划,它支持数据库、集群、插件以及邮件,并且支持 cron 表达式,具有极高的灵活性。

  • Spring Boot 中集成 Quartz 和 Spring 中集成 Quartz 比较类似,主要提供三个 Bean:JobDetail、Trigger 以及 SchedulerFactory

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。在java企业级应用中,Quartz是使用最广泛的定时调度框架

在Quartz中的主要概念:

  • Scheduler:调度任务的主要API
  • ScheduleBuilder:用于构建Scheduler,例如其简单实现类SimpleScheduleBuilder
  • Job:调度任务执行的接口,也即定时任务执行的方法
  • JobDetail:定时任务作业的实例
  • JobBuilder:关联具体的Job,用于构建JobDetail
  • Trigger:定义调度执行计划的组件,即定时执行
  • TriggerBuilder构建Trigger

在这里插入图片描述

1.1 Quartz的三大核心组件

  • 调度器:Scheduler。作用是,用来统一管理工作内容、工作计划周期
  • 任务:JobDetail。作用是,用来定义某项具体工作的工作内容
  • 触发器:Trigger,包括 SimpleTrigger 和 CronTrigger。作用是,用来定义某项具体工作的执行频率。

(1)Job(任务)是一个接口,有一个方法 void execute(JobExecutionContext context) ,可以通过实现该接口来定义需要执行的任务(具体的逻辑代码)。

JobDetailQuartz每次执行Job时,都重新创建一个Job实例,会接收一个Job实现类,以便运行的时候通过newInstance()的反射调用机制去实例化Job。JobDetail是用来描述Job实现类以及相关静态信息,比如任务在scheduler中的组名等信息。

(2)Trigger(触发器):描述触发Job执行的时间触发规则实现类SimpleTriggerCronTrigger可以通过cron表达式定义出各种复杂的调度方案。

Calendar:是一些日历特定时间的集合。一个Trigger可以和多个 calendar关联,比如每周一早上10:00执行任务,法定假日不执行,则可以通过calendar进行定点排除。

(3)Scheduler(调度器)代表一个Quartz的独立运行容器。Trigger和JobDetail可以注册到Scheduler中。Scheduler可以将Trigger绑定到某一JobDetail上,这样当Trigger被触发时,对应的Job就会执行一个Job可以对应多个Trigger,但一个Trigger只能对应一个Job。

1.2 CronTrigger配置格式

格式:【秒】【分】【小时】【日】【月】【周】【年】

序号 说明 是否必填 允许填写的值 允许的通配符
1 0-59 ,-*/
2 0-59 ,-*/
3 小时 0-23 ,-*/
4 1-31 ,-*?/LW
5 1-12 or JAN-DEC ,-*/
6 1-7 or SUN-SAT ,-*?/L#
7 empty 或 1970-2099 ,-*/

通配符说明:

在这里插入图片描述
可通过在线生成Cron表达式的工具:http://cron.qqe2.com/ 来生成自己想要的表达式。

常用示例:
在这里插入图片描述

2.Springboot 整合Quartz框架

【示例】创建SpringBoot项目并整合Quartz框架,实现定时任务功能。

2.1 创建项目

(1)创建SpringBoot项目,项目结构如下图:

(2)使用Maven添加依赖文件:

在pom

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值