SpringMVC引入QUARTZ定时器原理分析学习

本文详细介绍了SpringMVC中如何引入QUARTZ定时器,包括配置文件quartz.properties的加载,数据源的加载方式,以及通过SchedulerFactoryBean创建定时器工厂。在业务层面,通过定制化实现ConnectionProvider接口来提供数据源,并且通过继承QuartzJobBean并重写doJob方法执行定时任务。虽然部分细节如监听器监听Job、Trigger的具体机制有待深入理解,但整体流程清晰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整体流程:

系统初始化时,加载quartz.properties配置文件,获取定时器相关配置,包括定时器相关表前缀,jobstore实现类等配置;系统启动完成后,将数据库配置的定时器信息以bean的形式注册,然后使用监听器监听Job、Trigger等。(红色字体部分暂时不是完全理解);

定时器初始化完成以后,具体定时器通过调用job接口的execute方法实现业务逻辑的定时处理;

quartz.properties

org.quartz.scheduler.instanceName=TestScheduler
org.quartz.scheduler.instanceId=instance_one
org.quartz.scheduler.skipUpdateCheck=false

org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.threadPool.threadPriority=5

org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=false

org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.url = jdbc:mysql://**********:3306/db_name?useUnicode=true&characterEncoding=UTF-8
org.quartz.dataSource.myDS.user = ****
org.quartz.dataSource.myDS.password = ******
org.quartz.dataSource.myDS.maxConnections = 10
org.quartz.dataSource.myDS.validationQuery = SELECT table_name FROM information_schema.tables
org.quartz.dataSource.myDS.validateOnCheckout = true
org.quartz.dataSource.myDS.maxIdleSeconds = 50
org.quartz.dataSource.myDS.connectionProvider.class = com.kyee.nextframework.plugins.quartzsupport.conn_provider.CustomConnectionProvider
#org.quartz.dataSource.myCustomDS.connectionProvider.class = com.kyee.test.quartz.MYConnectionProvider

org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=false

ConnectionProvider加载数据源

通过配置org.quartz.dataSource.myDS.connectionProvider.class = com.kyee.nextframework.plugins.quartzsupport.conn_provider.CustomConnectionProvider ,其中CustomConnectionProvider 实现了ConnectionProvider接口,来完成定时器数据源加载;

定时器工厂SchedulerFactoryBean

SchedulerFactoryBeanService通过继承SchedulerFactoryBean类初始化时创建定时器工厂,并实现create方法创建定时器并以bean的形式注册;

具体定时器业务类

通过继承QuartzJobBean类,重写doJob方法完成业务模块定时处理;其中最核心父类调用的是job接口的是execute方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值