码迷,mamicode.com
首页 > 编程语言 > 详细

quartz使用(整合spring)

时间:2017-07-23 10:09:32      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:source   config   开发   pat   ntc   执行   quartz   local   triggers   

quartz与spring整合后,还是需要Scheduler实例、JobDetail实例、Trigger实例,只不过是用FactoryBean的方式创建了。

在spring-context-support-xxx.jar包中有对应的FactoryBean类,Scheduler实例对应org.springframework.scheduling.quartz.SchedulerFactoryBeanJobDetail实例对应两个FactoryBean类,org.springframework.scheduling.quartz.JobDetailFactoryBean和org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBeanTrigger实例对应两个FactoryBean类,org.springframework.scheduling.quartz.SimpleTriggerFactoryBean和org.springframework.scheduling.quartz.CronTriggerFactoryBean,SimpleTriggerFactoryBean对应生成SimpleTrigger实例,CronTriggerFactoryBean对应生成CronTrigger实例。

用MethodInvokingJobDetailFactoryBean创建的JobDetail实例不能序列化,不适于任务调度信息持久化的情况,所以说如果要持久化任务调度信息的话,只能用JobDetailFactoryBean来创建JobDetail实例。

这几项对应的spring配置文件内容如下:

<bean id="printJobDetail"
          class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="jobClass" value="com.kou.quartz.QuartzPrint"/>
        <property name="durability" value="false"/>
</bean>

<bean id="printCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="printJobDetail"/>
        <property name="cronExpression" value="0/5 * * * * ? *"/> <!-- 每5秒触发一次 -->
</bean>

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <!-- 指定quartz配置文件-->
        <property name="configLocation" value="classpath:quartz.properties"/>
        <!--QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动,单位秒 -->
        <property name="startupDelay" value="1"/>
        <!-- 设置自动启动 -->
        <property name="autoStartup" value="true"/>
        <property name="triggers">
            <list>
                <ref bean="printCronTrigger"/>
            </list>
        </property>
        <property name="overwriteExistingJobs" value="true"/>
        <!--<property name="dataSource" ref="dataSource"/>-->
</bean>

JobDetailFactoryBean的jobClass属性值就是我们自己开发的任务类,需要继承org.quartz.Job接口或者继承org.springframework.scheduling.quartz.QuartzJobBean。

SchedulerFactoryBean的configLocation属性值就是上一篇《quartz入门》中介绍的quartz.properties配置文件,放在classpath下。

SchedulerFactoryBean的overwriteExistingJobs属性默认为false,当trigger由每5秒执行一次变为每30秒执行一次时,任务调度是不会更改的,只有设为true之后才会更改。

SchedulerFactoryBean的dataSource属性不能设置,如果设置的话,用来持久化任务调度信息的类就变成了org.springframework.scheduling.quartz.LocalDataSourceJobStore,quartz.properties文件中org.quartz.jobStore.class配置项不再起作用。

quartz使用(整合spring)

标签:source   config   开发   pat   ntc   执行   quartz   local   triggers   

原文地址:http://www.cnblogs.com/koushr/p/5873467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!