SpringBoot整合Quartz

目录

  • `Quartz`
    • `Quartz` 简介
    • `Quartz` 优点
    • 核心概念
    • `Quartz` 的作业存储类型
    • `Cron` 表达式
      • `Cron` 语法
      • `Cron` 语法中每个时间元素的说明
      • `Cron` 语法中特殊字符说明
      • 在线 `Cron` 表达式生成器
  • `Springboot` 整合 `Quartz`
    • 数据库表准备
    • `Maven` 主要依赖
    • 配置文件
      • `quartz.properties`
      • `application.properties`
    • `quartz` 配置类 `QuartzConfig`
    • 创建任务类 `HelloJob`
    • 业务 `Service` 层
    • `Controller` 层
    • 接口测试
      • 新增定时任务
      • 停止项目,再启动运行

Quartz

Quartz 简介

QuartzOpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SEJ2EE 应用中,它提供了巨大的灵活性而不牺牲简单性

当定时任务愈加复杂时,使用 Spring 注解 @Schedule 已经不能满足业务需要

在项目开发中,经常需要定时任务来帮助我们来做一些内容,如定时派息、跑批对账、将任务纳入日程或者从日程中取消,开始,停止,暂停日程进度等。SpringBoot 中现在有两种方案可以选择,第一种是 SpringBoot 内置的方式简单注解就可以使用,当然如果需要更复杂的应用场景还是得 Quartz 上场,Quartz 目前是 Java 体系中最完善的定时方案

官方网站:http://quartz-scheduler.org/

Quartz 优点

  • 丰富的 Job 操作 API
  • 支持多种配置
  • SpringBoot 无缝集成
  • 支持持久化
  • 支持集群
  • Quartz 还支持开源,是一个功能丰富的开源作业调度库,可以集成到几乎任何 Java 应用程序中

核心概念

  • SchedulerQuartz 中的任务调度器,通过 TriggerJobDetail 可以用来调度、暂停和删除任务。调度器就相当于一个容器,装载着任务和触发器,该类是一个接口,代表一个 Quartz 的独立运行容器,TriggerJobDetail 可以注册到 Scheduler 中,两者在 Scheduler 中拥有各自的组及名称,组及名称是 Scheduler 查找定位容器中某一对象的依据,Trigger 的组及名称必须唯一,JobDetail 的组和名称也必须唯一(但可以和 Trigger 的组和名称相同,因为它们是不同类型的)
  • TriggerQuartz 中的触发器,是一个类,描述触发 Job 执行的时间触发规则,主要有 SimpleTriggerCronTrigger 这两个子类。当且仅当需调度一次或者以固定时间间隔周期执行调度,SimpleTrigger 是最适合的选择;而 CronTrigger 则可以通过 Cron 表达式定义出各种复杂时间规则的调度方案:如工作日周一到周五的 15:00 ~ 16:00 执行调度等
  • JobDetailQuartz 中需要执行的任务详情,包括了任务的唯一标识和具体要执行的任务,可以通过 JobDataMap 往任务中传递数据
  • JobQuartz 中具体的任务,包含了执行任务的具体方法。是一个接口,只定义一个方法 execute() 方法,在实现接口的 execute() 方法中编写所需要定时执行的 Job

当然可以这样快速理解:

  • job:任务 - 你要做什么事
  • Trigger:触发器 - 你什么时候去做
  • Scheduler:任务调度 - 你什么时候需要做什么事

四者其关系如下图所示

SpringBoot整合Quartz_第1张图片
Job 为作业的接口,为任务调度的对象;JobDetail 用来描述 Job 的实现类及其他相关的静态信息;Trigger 做为作业的定时

你可能感兴趣的:(面试,学习路线,阿里巴巴,android,前端,后端)