`

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集成

    集成Quartz与Spring,可以使我们方便地在Spring管理的bean中调度任务,实现定时任务的灵活配置。 **Quartz核心概念** 1. **Job**: 代表一个可执行的任务,是实际业务逻辑的封装。 2. **Trigger**: 触发器,决定Job...

    quartz+spring集成完整开发,富含文档说明

    将Quartz与Spring集成可以充分利用Spring的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)特性,使任务调度变得更加灵活和易于管理。这样的集成可以帮助开发者在SSH(Struts、Spring、Hibernate...

    quartz整合springbatch动态集群定时实现mysql参考

    Quartz与Spring的集成使得在Spring应用中管理任务变得更加容易,可以利用Spring的依赖注入和生命周期管理。 Spring Batch是一个用于处理大量数据的批处理框架。它提供了诸如事务管理、错误处理、读写器和处理器抽象...

    quartz和spring-quartz

    Spring-Quartz的集成则将这些概念与Spring的IoC(Inversion of Control)容器相结合,提供了更好的依赖注入支持。以下是一些关键点: 1. **Bean集成**: Spring可以自动将Job实例作为Spring Bean管理,这样你就可以...

    spring2与quartz在Web整合

    在将 Spring 2 与 Quartz 整合到 Web 应用中时,主要涉及以下几个关键知识点: 1. **Spring 2 的核心概念**:Spring 2 提供了 IoC(Inversion of Control,控制反转)和 AOP(Aspect-Oriented Programming,面向切...

    Quartz与Spring整合练习源代码

    Quartz是一款开源的作业调度框架,它允许程序在特定时间执行特定任务,广泛应用于各种需要自动化定时任务的场景。而Spring是Java领域中一个流行的...这是一个很好的学习资源,对于理解Quartz和Spring的集成有极大帮助。

    Quartz+Spring定时触发器例子

    在本示例中,“Quartz+Spring定时触发器例子”是一个完整的项目,包含了所有必要的jar包,这意味着你可以直接运行它来学习和理解Quartz与Spring的集成。这个项目应该包含以下组件: 1. **配置文件**:可能包含一个...

    spring集成quartz集群配置

    首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.springframework.scheduling.quartz.JobDetailBean`来创建Job,`org.springframework.scheduling.quartz....

    一个简单的quartz、spring集成版helloWorld示例演示

    在这个"一个简单的quartz、spring集成版helloWorld示例演示"中,我们将探讨如何将这两个框架结合使用,实现一个基础的定时任务。 首先,Quartz的集成通常涉及到Spring的`SchedulerFactoryBean`,这个bean负责管理和...

    quartz与spring

    在Quartz与Spring的集成中,Quartz可以作为Spring应用中的一个组件,利用Spring的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)特性来管理和配置任务调度。这种方式使得任务的创建...

    Quartz与Spring2.0整合Eclipse例程

    将Quartz与Spring结合使用,可以方便地在Spring管理的bean中定义和调度任务,实现灵活且可扩展的定时任务解决方案。 在"Quartz与Spring2.0整合Eclipse例程"中,我们将探讨如何在Eclipse开发环境中配置和运行一个...

    Quartz+spring定时任务demo

    在 "Quartz+spring定时任务demo" 中,我们首先需要了解如何配置和集成 Quartz 与 Spring。这通常包括以下步骤: 1. **引入依赖**:在项目中添加 Quartz 和 Spring 相关的 jar 包。描述中提到的 "1128266338845696....

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...

    spring 集成quartz 用数据库实现quartz的集群

    【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...

    quartz入门例子,spring集成配置使用

    Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考http://www.blogjava.net/baoyaer/articles/155645.html 博客信息 看此代码,项目里分为两大块,com文件夹下 为上面博客相关学习...

    spring集成quartz所需文件

    标题 "spring集成quartz所需文件" 指的是将 Spring 框架与 Quartz 进行整合,以利用 Quartz 的定时任务功能。这种集成使得开发者可以在 Spring 环境下方便地管理调度任务,实现灵活的定时任务逻辑。 在描述中提到 ...

    quartz整合springbatch定时集群实现mysql参考模版

    总的来说,"quartz_springbatch"模版提供了一个完整的解决方案,用于构建基于Quartz和SpringBatch的定时任务集群,且与MySQL数据库集成,确保数据的可靠性和任务的高可用性。通过学习和理解这个模版,开发者可以快速...

    quartz2.2.1 spring3.1.1

    在 Spring 中集成 Quartz,可以使作业调度更加灵活和易于管理。通过 Spring 的任务调度支持,可以声明式地定义和管理 Quartz 作业。这通常涉及到在 Spring 配置文件中定义 Job 和 Trigger,然后将它们绑定在一起。...

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

    quartz2 与spring4 集成 定时任务Job

    总的来说,Quartz2与Spring4的集成提供了一种灵活且可扩展的方式来管理和执行定时任务,结合了Quartz的调度能力和Spring的容器管理优势,使得在Java应用中实现定时任务变得更加简单和高效。同时,通过源码阅读和工具...

Global site tag (gtag.js) - Google Analytics