Spring实现Quartz自动配置的方法详解

 更新时间:2023年11月13日 09:25:25   作者:阿湯哥  
这篇文章主要介绍了Spring实现Quartz自动配置的方法详解,如果想在应用中使用Quartz任务调度功能,可以通过Spring Boot实现Quartz的自动配置,以下介绍如何开启Quartz自动配置,以及Quartz自动配置的实现过程,需要的朋友可以参考下

1. 开启Quartz自动配置

QuartzAutoConfiguration自动为Quartz的自动配置类,它的创建了SchedulerFactoryBean。

在这里插入图片描述

首先通过QuartzAutoConfiguration自动配置类可以看到,要实现Quartz自动配置,需要存在三个类Scheduler.class, SchedulerFactoryBean.class, PlatformTransactionManager.class,其中

  • Scheduler所在包quartz-2.3.0.jar
  • SchedulerFactoryBean所在包spring-context-support-5.2.10.RELEASE.jar
  • PlatformTransactionManager所在包spring-tx-5.2.10.RELEASE.jar 因此需要确保这三个Jar包在pom文件中存在。

在这里插入图片描述

Quartz的坐标示例:

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.3.0</version>
</dependency>

2. Quartz自动配置的实现过程

2.1 核心类图

下图展示了Quartz的核心类图,其中

  • Scheduler是Quartz调度器的主接口;
  • SchedulerFactory是调度器工厂接口,用户获取调度器实例;
  • StdScheduler是Scheduler的一个实现类,同时也是一个代理类,它会将所有的方法调用直接传递给内部的QuartzScheduler对象;RemoteScheduler是Scheduler的另一个实现类,同时也是一个代理类,它会将所有的方法调用通过RMI传递给远程的QuartzScheduler对象;
  • StdSchedulerFactory是SchedulerFactory的实现类,它会创建QuartzScheduler对象,并返回其代理对象StdScheduler;
  • QuartzSchedulerResources包含所有的资源,包括JobStore、线程池信息等;
  • QuartzSchedulerThread是触发和执行任务的主线程;

在这里插入图片描述

2.2 核心方法

  • 准备SchedulerFactory -> StdSchedulerFactory
  • 准备Scheduler -> StdScheduler
  • 注册监听器
  • 注册任务和触发器

在这里插入图片描述

3. 任务调度执行

3.1 大致流程

任务调度的大致流程:

  • 如果线程池有可用线程,获取待执行Trigger;
  • 获取触发器Trigger的触发任务,构造JobRunShell;
  • 放入线程池执行任务,默认使用线程池实现 org.quartz.simpl.SimpleThreadPool;

在这里插入图片描述

3.2 调整线程池的大小

线程池的默认大小为10,可以通过配置文件调整默认线程池的大小

spring:
  quartz:
    properties:
      org:
        quartz:
          threadPool:
            threadCount: 15

本文从如何开启Quartz自动配置入手,介绍了自动配置的核心类和自动配置的实现过程,以及任务调度的大致执行逻辑,最后介绍了如何通过Spring配置调整线程池的大小,希望对大家有所帮助。

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

相关文章

  • MyBatis之一级缓存和二级缓存问题

    MyBatis之一级缓存和二级缓存问题

    这篇文章主要介绍了MyBatis之一级缓存和二级缓存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • SpringBoot实现支付宝沙箱支付的完整步骤

    SpringBoot实现支付宝沙箱支付的完整步骤

    沙箱支付是一种用于模拟真实支付环境的测试工具,它提供了一个安全的测试环境,供开发者在不影响真实交易的情况下进行支付功能的开发和测试,这篇文章给大家介绍了SpringBoot实现支付宝沙箱支付的完整步骤,需要的朋友可以参考下
    2024-04-04
  • 使用proguard对maven构建的springboot项目进行混淆方式

    使用proguard对maven构建的springboot项目进行混淆方式

    文章介绍了如何使用ProGuard对Maven构建的Spring Boot项目进行混淆,并解决混淆后可能遇到的版本兼容性问题和类名冲突问题,主要步骤包括下载高版本的ProGuard、配置POM文件、添加ProGuard配置文件、修改Spring Boot启动文件以避免类名冲突
    2024-11-11
  • SpringBoot没有主清单属性的解决方法

    SpringBoot没有主清单属性的解决方法

    在本篇文章里小编给大家整理的是关于解决SpringBoot没有主清单属性知识点,需要的朋友们学习下。
    2019-11-11
  • Java设计模式之责任链模式简介

    Java设计模式之责任链模式简介

    这篇文章主要介绍了Java设计模式之责任链模式,需要的朋友可以参考下
    2014-07-07
  • 解决springboot报错Failed to parse multipart servlet request; nested exception is java.io.IOException问题

    解决springboot报错Failed to parse multipart servlet request

    在使用SpringBoot开发时,通过Postman发送POST请求,可能会遇到因临时目录不存在而导致的MultipartException异常,这通常是因为OS系统(如CentOS)定期删除/tmp目录下的临时文件,解决方案包括重启项目
    2024-10-10
  • Java字节缓存流的构造方法之文件IO流

    Java字节缓存流的构造方法之文件IO流

    这篇文章主要介绍了Java字节缓存流的构造方法之文件IO流,同时也介绍了字符流中的一些相关的内容,并且通过大量的案例供大家理解。最后通过一些经典的案例帮助大家对前面所学的知识做了一个综合的应用,需要的朋友可以参考一下
    2022-04-04
  • 解决Spring boot 嵌入的tomcat不启动问题

    解决Spring boot 嵌入的tomcat不启动问题

    这篇文章主要介绍了解决Spring boot 嵌入的tomcat不启动问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Fluent Mybatis零xml配置实现复杂嵌套查询

    Fluent Mybatis零xml配置实现复杂嵌套查询

    本文主要介绍了Fluent Mybatis零xml配置实现复杂嵌套查询,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 一文秒懂Java中的乐观锁 VS 悲观锁

    一文秒懂Java中的乐观锁 VS 悲观锁

    这篇文章主要介绍了java乐观锁 VS 悲观锁的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-05-05

最新评论