Quartz与Spring的集成
2.1 Scheduler 总入口
<bean name="quartzScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
<property name="configLocation" value="classpath:quartz.properties"/>
</bean>
quartz的详细配置在quartz.properties文件,具体配置见其注释或参考参考文档,一般默认即为JVM嵌入式Scheduler。也可以配置把任务执行情况存储于数据库中,即使服务器重起,也能保证任务计划正确执行。
比如定义12点运行任务的,如果12:05运行了一次,然后服务器在12:30重启,如果没有持久化,那还会重新运行一次。
可惜hsqldb不支持select * from foo for update 这样的行锁定sql语法,无法demo。
2.2 Trigger
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail"/>
<!--朝九晚五工作时间内每半小时执行一次-->
<property name="cronExpression" value="0 0/30 9-17 *,* * ?"/>
</bean>
强大的cronTrigger,类似著名的cron表达式,方便我们任意的job控制的想法。
当然quartz也有简单的simpleTrigger,实现的东西就和jdk中的timer差不多了,另还有好几个其他的timer。详细请参考quartz 的文档。
2.3 POJO式定义
Spring中与quartz 的结合方式有两种,一种是以quartz本身的一些特性,没有很好的体现springside的一切都是pojo宗旨,这里暂且不谈,而springside中实现的是以pojo为job的一种做法,大致的配置如下:
<!-- 使用pojo来做job,指定pojo和method -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="bookStockChecker"/>
<property name="targetMethod" value="check"/>
</bean>
2.4 小心陷阱
1. 启动计划的FactoryBean们不要lazy-load,否则计划无法启动。
2. Scheduler 不要 Autowire,否则会传入一个DataSource/SessionFactory给Scheduler,Scheduler就会认为是许要持久化任务执行情况,而其实你是JVM形式执行的,就会报没有建立Quartz持久化表,Table or View not Found。
3. Quartz相对于JDK Timer Task的进步
1. 首先是细致的Cron语法;
2. 然后是可以把任务执行情况存储于数据库中,即使服务器重起,也能保证任务计划正确执行,详见2.1 Scheduler 总入口;
3. 还有线程池并发执行的能力;
4. 还有群集执行的能力。
以上特征都可以在quartz的配置文件quartz.properties里看出样貌。
4.常见问题
4.1 如何在Spring配置文件里如何设定定时执行函数的参数?
这是个伪问题,定时执行的函数应该是无参的。正确的方法设定该POJO的成员变量,或者由POJO自行去读取某个配置文件
分享到:
相关推荐
集成Quartz与Spring,可以使我们方便地在Spring管理的bean中调度任务,实现定时任务的灵活配置。 **Quartz核心概念** 1. **Job**: 代表一个可执行的任务,是实际业务逻辑的封装。 2. **Trigger**: 触发器,决定Job...
将Quartz与Spring集成可以充分利用Spring的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)特性,使任务调度变得更加灵活和易于管理。这样的集成可以帮助开发者在SSH(Struts、Spring、Hibernate...
Quartz与Spring的集成使得在Spring应用中管理任务变得更加容易,可以利用Spring的依赖注入和生命周期管理。 Spring Batch是一个用于处理大量数据的批处理框架。它提供了诸如事务管理、错误处理、读写器和处理器抽象...
这篇博客将深入探讨Quartz与Spring集成的原理、步骤以及实际应用中的常见问题。 首先,Quartz提供了强大的定时任务调度功能,包括简单任务、间隔任务、cron表达式定时任务等。它允许开发者定义Job(工作)和Trigger...
Spring-Quartz的集成则将这些概念与Spring的IoC(Inversion of Control)容器相结合,提供了更好的依赖注入支持。以下是一些关键点: 1. **Bean集成**: Spring可以自动将Job实例作为Spring Bean管理,这样你就可以...
在提供的压缩包文件“quartz项目资料”中,可能包含了关于如何设置Quartz与Spring集成的详细示例代码、数据库脚本、配置文件等,你可以进一步学习和参考。通过实践这些资料,你将能够更好地理解和掌握如何利用Quartz...
在将 Spring 2 与 Quartz 整合到 Web 应用中时,主要涉及以下几个关键知识点: 1. **Spring 2 的核心概念**:Spring 2 提供了 IoC(Inversion of Control,控制反转)和 AOP(Aspect-Oriented Programming,面向切...
Quartz是一款开源的作业调度框架,它允许程序在特定时间执行特定任务,广泛应用于各种需要自动化定时任务的场景。而Spring是Java领域中一个流行的...这是一个很好的学习资源,对于理解Quartz和Spring的集成有极大帮助。
在本示例中,“Quartz+Spring定时触发器例子”是一个完整的项目,包含了所有必要的jar包,这意味着你可以直接运行它来学习和理解Quartz与Spring的集成。这个项目应该包含以下组件: 1. **配置文件**:可能包含一个...
在这个"一个简单的quartz、spring集成版helloWorld示例演示"中,我们将探讨如何将这两个框架结合使用,实现一个基础的定时任务。 首先,Quartz的集成通常涉及到Spring的`SchedulerFactoryBean`,这个bean负责管理和...
2. **配置Quartz**:在Spring的配置文件(如applicationContext.xml)中,声明Quartz的相关bean,包括`SchedulerFactoryBean`,它是Quartz与Spring集成的关键: ```xml <bean id="schedulerFactoryBean" class="org....
在Quartz与Spring的集成中,Quartz可以作为Spring应用中的一个组件,利用Spring的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)特性来管理和配置任务调度。这种方式使得任务的创建...
首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.springframework.scheduling.quartz.JobDetailBean`来创建Job,`org.springframework.scheduling.quartz....
将Quartz与Spring结合使用,可以方便地在Spring管理的bean中定义和调度任务,实现灵活且可扩展的定时任务解决方案。 在"Quartz与Spring2.0整合Eclipse例程"中,我们将探讨如何在Eclipse开发环境中配置和运行一个...
本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...
在 "Quartz+spring定时任务demo" 中,我们首先需要了解如何配置和集成 Quartz 与 Spring。这通常包括以下步骤: 1. **引入依赖**:在项目中添加 Quartz 和 Spring 相关的 jar 包。描述中提到的 "1128266338845696....
将Quartz与Spring集成,能够充分利用Spring的优秀特性来管理和配置定时任务,简化开发流程。 本文主要讨论的是如何在Spring应用中集成Quartz,并实现自定义注解来更便捷地定义和管理定时任务。首先,我们需要在项目...
在使用Quartz与Spring集成时,首先需要在项目中引入Quartz的jar包,如标题中提到的`quartz-all-1.8.4.jar`,这个版本被认为是较稳定且具有较好的兼容性的。引入后,你需要配置Spring的ApplicationContext,声明一个...
【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...
Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考http://www.blogjava.net/baoyaer/articles/155645.html 博客信息 看此代码,项目里分为两大块,com文件夹下 为上面博客相关学习...