Spring如何实现Quartz的自动配置
Spring如何实现Quartz的自动配置
- 1. 开启Quartz自动配置
- 2. Quartz自动配置的实现过程
- 2.1 核心类图
- 2.2 核心方法
- 3. 任务调度执行
- 3.1 大致流程
- 3.2 调整线程池的大小
如果想在应用中使用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的自动配置1. 开启Quartz自动配置2. Quartz自动配置的实现过程2.1 核心类图2.2 核心方法3. 任务调度执行3.1 大致流程3.2 调整线程池的大小如果想在应用中使用Quartz任务调度功能,可以通过Spring Boot实现Quartz的自动配置。以下介绍如何开启Qu…...
计算机组成原理——作业四
一. 单选题(共11题,33分) 1. (单选题, 3分)四片74181 ALU和一片74182 CLA器件相配合,具有如下进位传递功能:________。 A. 行波进位B. 组内先行进位,组间行波进位C. 组内先行进位,组间先行进位D. 组内行波进位,组间先行进位 我的答案: C 3…...
2023前端面试题(经典面试题)
经典面试题Vue2.0 和 Vue3.0 有什么区别?vue中计算属性和watch以及methods的区别?单页面应用和多页面应用区别及优缺点?说说 Vue 中 CSS scoped 的原理?谈谈对Vue中双向绑定的理解?为什么vue2和vue3语法不可以混用&…...
【Linux内网穿透】使用SFTP工具快速实现内网穿透
文章目录内网穿透简介1. 查看地址2.局域网测试连接3.创建tcp隧道3.1. 安装cpolar4.远程访问5.固定TCP地址内网穿透简介 是一种通过公网将内网服务暴露出来的技术,可以使得内网服务可以被外网访问。以下是内网穿透的一些应用: 远程控制:通过内…...
SQL语句性能分析
1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。 整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。字母 S 的部分代表观察&…...
【K3s】第28篇 详解 k3s-killall.sh 脚本
目录 k3s-killall.sh 脚本 k3s-killall.sh 脚本 为了在升级期间实现高可用性,当 K3s 服务停止时,K3s 容器会继续运行。 要停止所有的 K3s 容器并重置容器的状态,可以使用k3s-killall.sh脚本。 killall 脚本清理容器、K3s 目录和网络组件&a…...
生成时序异常样本-学习记录-未完待续
1.GAN&VAE|时间序列生成及异常注入那些事儿:主要讲了数据增广,用GAN、WGAN、DCGAN、VAE,有给几个代码的github的链接,非常有用 2.时序异常检测综述,写的非常好 3.自编码器原理讲解,后面还附…...
自定义类型的超详细讲解ᵎᵎ了解结构体和位段这一篇文章就够了ᵎ
目录 1.结构体的声明 1.1基础知识 1.2结构体的声明 1.3结构体的特殊声明 1.4结构体的自引用 1.5结构体变量的定义和初始化 1.6结构体内存对齐 那对齐这么浪费空间,为什么要对齐 1.7修改默认对齐数 1.8结构体传参 2.位段 2.1什么是位段 2.2位段的内存分配…...
【五】springboot启动源码 - onRefresh
onRefresh 源码解析 Initialize other special beans in specific context subclasses. 核心是创建一个web服务容器(并未在这个方法启动) createWebServer第182行,获取ServletWebServerFactory的具体实现 getWebServerFactory方法ÿ…...
带你一文透彻学习【PyTorch深度学习实践】分篇——线性回归(训练周期:前馈、反馈、权重更新)
“梦想使你迷醉,距离就成了快乐;追求使你充实,失败和成功都是伴奏;当生命以美的形式证明其价值的时候,幸福是享受,痛苦也是享受。” --------史铁生《好运设计》 🎯作者主页:追光者♂🔥 🌸个人简介:计算机专业硕士研究生💖、2022年CSDN博客之星人工…...
【前端八股文】浏览器系列:性能优化——HTML、CSS、JS、渲染优化
文章目录HTMLCSSCSS加载会造成阻塞吗JavaScript渲染优化参考本系列目录:【前端八股文】目录总结 是以《代码随想录》八股文为主的笔记。详情参考在文末。 代码随想录的博客_CSDN博客-leecode题解,ACM题目讲解,代码随想录领域博主 性能优化,从以下几个方…...
Linux分文件编程:静态库与动态库的生成和使用
目录 一,Linux库引入之分文件编程 ① 简单说明 ② 分文件编程优点 ③ 操作逻辑 ④ 代码实现说明 二,Linux库的基本说明 三,Linux库之静态库的生成与使用 ① 静态库命名规则 ② 静态库制作步骤 ③ 静态库的使用 四,Linu…...
技术人的管理学-业务管理
主要内容前言制定计划遇到的问题?过程监控遇到的问题?复盘改进遇到的问题?通过PDCA循环解决业务管理问题总结前言 没有人天生就会管理,优秀的管理者都是在知行合一的过程中成长起来的,他们既需要系统的管理知识&#…...
Dubbo的独门绝技,SPI实现原理分析
文章目录前言普通SPI实现原理实例化扩展点源码分析扩展点加载流程分析LoadingStrategy分析接口定义接口实现加载原理loadClass方法分析自适应SPI实现原理自适应扩展代码生成分析自激活SPI简单使用原理分析Activate注解源码分析IOC实现原理objectFactory介绍总结AOP实现原理总结…...
单例模式,饿汉与懒汉
文章目录什么是单例模式单例模式的两种形式饿汉模式懒汉模式懒汉模式与饿汉模式是否线程安全懒汉模式的优化什么是单例模式 单例模式其实就是一种设计模式,跟象棋的棋谱一样,给出一些固定的套路帮助你更好的完成代码。设计模式有很多种,单例…...
Prometheus监控实战之Blackbox_exporter黑盒监测
1 Blackbox_exporter应用场景 blackbox_exporter是Prometheus官方提供的exporter之一,可以提供HTTP、HTTPS、DNS、TCP以及ICMP的方式对网络进行探测。 1.1 HTTP 测试 定义 Request Header信息 判断 Http status / Http Respones Header / Http Body内容 1.2 TC…...
【蓝桥杯集训·每日一题】AcWing 1051. 最大的和
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴线性DP一、题目 1、原题链接 1051. 最大的和 2、题目描述 对于给定的整数序列 A{a1,a2,…,an},找出两个不重合连续子段,使得两子段中所有数字的和最…...
【Unity工具,简单应用】Photon + PUN 2,做一个简单多人在线聊天室
【Unity工具,简单应用】Photon PUN 2,做一个简单多人聊天室前置知识,安装,及简单UI大厅聊天室简单同步较复杂同步自定义同步最终效果前置知识,安装,及简单UI 【Unity工具,简单学习】PUN 2&…...
程序员增加收入实战 让小伙伴们都加个鸡腿
文章目录前言1️⃣一、发外包平台💁🏻♂️二、朋友介绍✍️三、打造自己的个人IP👋🏿四、混群拉单🤳🏿五、面试拉单💻六、技术顾问🦴七、开发个人项目总结:前言 程序员…...
GPIO四种输入和四种输出模式
GPIO的结构图如下所示: 最右端为I/O引脚,左端的器件位于芯片内部。I/O引脚并联了两个用于保护的二极管。 输入模式 从I/O引脚进来就遇到了两个开关和电阻,与VDD相连的为上拉电阻,与VSS相连的为下拉电阻。再连接到TTL施密特触发…...
繁忙海港水域船舶精细识别与多目标跟踪研究
繁忙海港水域船舶精细识别与多目标跟踪研究 摘要 繁忙海港水域的船舶智能感知是智慧港口与海上交通管理的关键技术。然而,海港场景特有的复杂背景干扰、船舶密集遮挡、相机运动抖动以及小目标检测困难等问题,给船舶的精细化识别与稳定跟踪带来了严峻挑战。本文针对上述问题…...
Umi-OCR深度指南:离线OCR技术的架构解析与全场景实战
Umi-OCR深度指南:离线OCR技术的架构解析与全场景实战 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHu…...
企业级邮件系统自建指南:从技术选型到生产部署
企业级邮件系统自建指南:从技术选型到生产部署 【免费下载链接】james-project James Project是一个用于电子邮件服务器的开源软件。适用于需要为其邮件基础设施提供强大和可靠的邮件传输代理的企业和组织。具有可扩展性、灵活性和易于使用的特点。 项目地址: htt…...
Claude Code 命令行参数实践指南
前言 很多人第一次打开 Claude Code,只会输入 claude,然后开始聊天。这当然可以,但就像开车只会踩油门一样——你根本没用上方向盘和变速箱。 命令行参数(CLI Flags)就是那些被忽视的"方向盘"。掌握它们&a…...
s2-pro语音合成镜像快速上手:5分钟搞定专业级文字转语音
s2-pro语音合成镜像快速上手:5分钟搞定专业级文字转语音 1. 镜像简介与核心功能 s2-pro是Fish Audio开源的专业级语音合成模型镜像,能够将文本转换为自然流畅的语音。这个镜像特别适合需要快速部署文字转语音功能的开发者、内容创作者和企业用户。 1.…...
终极Neovim AI助手:Avante.nvim如何彻底改变你的编码体验 [特殊字符]
终极Neovim AI助手:Avante.nvim如何彻底改变你的编码体验 🚀 【免费下载链接】avante.nvim Use your Neovim like using Cursor AI IDE! 项目地址: https://gitcode.com/GitHub_Trending/ava/avante.nvim 在当今AI驱动的开发时代,Neov…...
Go后端项目代码规范:编写可维护Clean Architecture代码的7个黄金法则
Go后端项目代码规范:编写可维护Clean Architecture代码的7个黄金法则 【免费下载链接】go-backend-clean-architecture A Go (Golang) Backend Clean Architecture project with Gin, MongoDB, JWT Authentication Middleware, Test, and Docker. 项目地址: https…...
Java Faker故障排除终极指南:10个常见问题与解决方案完整清单
Java Faker故障排除终极指南:10个常见问题与解决方案完整清单 【免费下载链接】java-faker Brings the popular ruby faker gem to Java 项目地址: https://gitcode.com/gh_mirrors/ja/java-faker Java Faker是Java开发者生成测试数据的终极工具,…...
别再瞎猜了!手把手教你用公式算清摄像头MIPI Lane数(附Excel计算器)
摄像头MIPI Lane数计算实战:从理论到Excel工具全解析 在嵌入式摄像头模组开发中,MIPI Lane数的选择往往让工程师陷入两难:Lane数不足会导致数据吞吐瓶颈,而过度配置又会增加功耗和成本。我曾见过一个团队因为凭经验选择了2 Lane配…...
Flash Browser终极指南:让消失的Flash世界重新回归
Flash Browser终极指南:让消失的Flash世界重新回归 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 还记得那些陪伴我们成长的Flash小游戏吗?🎮 那些有趣…...
