假设有一个QuartzTasks类,其有一个print方法,现需要在Spring中使用Quartz对其进行定时调度。我们先配置一个JobDetail,采用Spring提供的MethodInvokingJobDetailFactoryBean,其可以指定需要调度的对象及其方法名称。配置如下:
<bean id="quartzTasks" class="com.elim.learn.spring.task.QuartzTasks"/>
<bean
id="quartzTasksJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
p:targetObject-ref="quartzTasks"
p:targetMethod="print"/>
定义JobDetail时如果不希望该Job可以并发调度,即前一次还没有调度完成时不希望下一次调度开始,则可以指定concurrent属性为false。默认是可以并发调度的。
<bean id="quartzTasksJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" p:targetObject-ref="quartzTasks" p:targetMethod="print" P:concurrent="false"/>
然后是定义Trigger,可以选择使用Spring提供的org.springframework.scheduling.quartz.CronTriggerFactoryBean
或org.springframework.scheduling.quartz.SimpleTriggerFactoryBean
。CronTriggerFactoryBean用来根据cron表达式定义调度时机。下面的配置就配置了每分钟触发一次quartzTasksJobDetail的调度。
<bean
id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
p:jobDetail-ref="quartzTasksJobDetail"
p:cronExpression="0 * * * * ?"/>
SimpleTriggerFactoryBean用来定义每隔多长时间调度一次,可以指定初始延迟时间,总的调度次数。下面的配置就定义了每隔3秒调度一次quartzTasksJobDetail,初次调度延迟2秒进行,然后总共重复5次,即一共会进行6次调度。
<bean
id="simpleTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
p:jobDetail-ref="quartzTasksJobDetail"
p:startDelay="2000"
p:repeatInterval="3000"
p:repeatCount="5"/>
有了Trigger之后需要通过Scheduler进行注册,下面的代码就定义了一个Scheduler,同时注册了上面定义的两个Trigger。这样当Spring容器启动以后注册的Trigger在达到了调度时机时就会自动进行调度了。
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
通过SchedulerFactoryBean也可以指定一些其它信息,比如下面的代码就指定了Job调度时使用的TaskExecutor。更多信息的指定可以参考对应的API文档。
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
p:taskExecutor-ref="myExecutor">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
(注:本文是基于Spring4.1.0所写)
相关推荐
NULL 博文链接:https://evin7.iteye.com/blog/482450
刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
Java_Spring与Quartz的整合
所需jar如下: spring-beans-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE....quartz-all-2.1.7.jar spring-tx-3.2.4.RELEASE.jar slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar
本人花费多日时间,亲测有效。所需文件代码完整,只需导入常用开发IDE和mysql数据库即可正常使用。
spring3整合quartz1.8和spring3整合quartz2.2两个版本示例
spring3.1 与 quartz 1.8.6 整合 的 所有jar
好像很多人整合出现了问题,所以抽个demo出来 是一个demo包含源码和lib 在tomcat下可以执行
spring整合quartz文档
Spring整合Quartz定时发送邮件
spring整合quartz使用jdbc存储任务,并配置为quartz集群应用
spring整合quartz定时任务调度..........
Spring整合Quartz MyEclipse6.0 Quartz 1.5.2 里面jar包已经导入,下载之后可以直接放在web服务器(比如Tomcat)下运行;
Spring整合Quartz定时任务 在集群、分布式系统中的应用
Quartz与Spring整合练习源代码,本文博客地址http://blog.csdn.net/Earl_yuan/article/details/50668864
Spring整合Quartz 将Quartz相关对象的创建和管理,整合到Spring中beans容器中,使得Quartz的使用和操作更加方便。 比如,将Job中需要的公共资源(如数据库连接池)直接配置在SchedulerContext中。 比如,将quartz....