SpringBoot自动配置Quartz的实现步骤

 更新时间:2021年11月01日 09:49:49   作者:showsen  
本文主要介绍了SpringBoot自动配置Quartz的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

SpringBoot2.0版本之后,其中增加了对Quartz框架的支持内容,可以实现通过容器来自动配置Quartz。

1. 依赖信息

springboot2.x版本时,出现了spring-boot-starter-quartz这一起步依赖,其中提供了很多丰富功能。

1.1 原依赖信息

之前引入quartz框架时,必须引入的依赖信息有:

<!--quartz核心包-->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>
<!--添加Scheduled坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>
<!--Spring tx 坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
</dependency>

依赖引入之后,项目的maven中的依赖管理信息

1.2 新的依赖

使用新的spring-boot-starter-quartz依赖代替原有三种依赖信息:

<!--springboot2-quartz依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

依赖引入后,项目maven管理的依赖信息

1.3 依赖变化

可以看出,springBoot2.0之后使用一个starter依赖就相当于引入三个依赖信息,spring-boot-starter-quartz本质上与引入三个依赖信息相同。

2. 新的依赖使用

2.1 默认配置可用

使用新的依赖信息后,对于原有的配置方式是完全可行的,如原有的quartz使用流程:

  • 定义任务实现Job,并重写其中的execute()方法,添加执行的任务
  • 配置Quartz配置类,配置类中注入Job、Trigger、Scheduler对象
  • 配置类或者启动类上使用@EnableScheduling注解开启定时任务
  • 项目启动时会自动执行配置的定时任务

在新的依赖支持下项目执行效果完全一致。

2.2 使用自动配置

如果说springboot2.0之后的starter依赖带来的变化,最主要的就是依赖包中封装了quartz的自动配置相关内容。

quartz相关的自动配置类是springboot的autoconfigure自动配置类包中提供的支持,如下

  • QuartzAutoConfiguration,自动配置类,其中会自动初始化配置调度器类、数据源信息、和数据存储类型等
  • QuartzProperties,配置文件类,对于quartz的配置信息,使用统一的application.yml/properties管理,jar包中提供了一个QuartzProperties类专门用来获取配置文件中quartz相关的配置信息。
    • 该类存在org.springframework.boot.autoconfigure.quartz springboot自动配置包中,获取配置文件中以"spring.quartz"开头的配置
  • QuartzDataSourceInitializer,初始化数据源操作,直接使用spingboot项目的数据源配置
  • JobStoreType,定义quartz数据存储类型的枚举类,有MEMORY/JDBC两个值
  • SchedulerFactoryBeanCustomizer,功能接口,可以通过实现该接口来实现调度器类的自定义配置

使用自动配置类流程

  • 使用starter依赖信息
  • 使用 application.yml/properties 统一管理quartz配置
  • 移除使用@Configuration标注的自动配置类,否则该配置类会代替自动配置

2.3 配置信息:

在application.yml文件中配置数据持久化:

server:
  port: 8082

spring:
  datasource:
    url: jdbc:mysql://10.35.219.24:3306/test282?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
    username: mysql
    password: Dh2236@db!
    driver-class-name: com.mysql.cj.jdbc.Driver
  quartz:
    #相关属性配置
    properties:
      org:
        quartz:
          scheduler:
            instanceName: clusteredScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: true
            clusterCheckinInterval: 10000
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 15
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
    #数据库方式
    job-store-type: jdbc

数据库存储方式字段job-store-typ可以取值为jdbc或memory,如果需要设置为memory存储在内存中时,需要则需要更改jobStore.class为内存类型,并移除jonStore下的其他配置信息;否则会启动报错。

3. 总结

SpringBoot的自动配置带来了很大的效率,减去了很多重复的配置、也增加了代码的简洁性。

但是,自动配置往往也会带来一些问题,如自动配置冲突等情况,往往需要手动来选择最终使用的配置对象。

到此这篇关于SpringBoot自动配置Quartz的实现步骤的文章就介绍到这了,更多相关SpringBoot自动配置Quartz内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解使用JavaCV/OpenCV抓取并存储摄像头图像

    详解使用JavaCV/OpenCV抓取并存储摄像头图像

    本篇文章主要介绍了使用JavaCV/OpenCV抓取并存储摄像头图像,实例分析了使用JavaCV/OpenCV抓取并存储摄像头图像的技巧,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • springboot1.X和2.X中如何解决Bean名字相同时覆盖

    springboot1.X和2.X中如何解决Bean名字相同时覆盖

    这篇文章主要介绍了springboot1.X和2.X中如何解决Bean名字相同时覆盖,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Mybatisplus主键生成策略算法解析

    Mybatisplus主键生成策略算法解析

    这篇文章主要介绍了Mybatisplus主键生成策略算法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 使用MultipartFile来上传单个及多个文件代码示例

    使用MultipartFile来上传单个及多个文件代码示例

    这篇文章主要介绍了使用MultipartFile来上传单个及多个文件代码示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Spring创建Bean的生命周期详析

    Spring创建Bean的生命周期详析

    这篇文章主要介绍了Spring创建Bean的生命周期详析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 手写简版kedis分布式key及value服务的实现及配置

    手写简版kedis分布式key及value服务的实现及配置

    这篇文章主要为大家介绍了手写简版的kedis分布式key及value服务的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 基于SpringBoot和Vue3的博客平台的用户注册与登录功能实现

    基于SpringBoot和Vue3的博客平台的用户注册与登录功能实现

    本教程将指导您如何使用Spring Boot和Vue3实现用户注册与登录功能。我们将使用Spring Boot作为后端框架,Vue3作为前端框架,同时使用MySQL作为数据库,感兴趣的朋友可以参考一下
    2023-04-04
  • Java+opencv3.2.0之直方图均衡详解

    Java+opencv3.2.0之直方图均衡详解

    这篇文章主要为大家详细介绍了Java+opencv3.2.0之直方图均衡的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Java 实战项目之疫情人员流动管理系统详解

    Java 实战项目之疫情人员流动管理系统详解

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java实现一个疫情人员流动管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java Validated 分组校验的使用

    Java Validated 分组校验的使用

    这篇文章主要介绍了Java Validated 分组校验的使用,文章记录所以在这里记录下分组校验注解@Validated的使用,具有一定的参考价值,需要的朋友可以参考一下
    2022-02-02

最新评论