Spring实现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自动配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
简单说明Java的Struts框架中merge标签的使用方法
这篇文章主要简单介绍了Java的Struts框架中merge标签的使用方法,Struts是Java的SSH三大web开发框架之一,需要的朋友可以参考下2015-12-12
SpringBoot使用Atomikos技术整合多数据源的实现
这篇文章主要介绍了SpringBoot使用Atomikos技术整合多数据源的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-03-03
解决Maven打包只有几十K,运行报错no main manifest attribute
这篇文章主要介绍了解决Maven打包只有几十K,运行报错no main manifest attribute问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-06-06


最新评论