quartz使用(整合spring)
2017-07-23 02:11
218 查看
quartz与spring整合后,还是需要Scheduler实例、JobDetail实例、Trigger实例,只不过是用FactoryBean的方式创建了。
在spring-context-support-xxx.jar包中有对应的FactoryBean类,Scheduler实例对应org.springframework.scheduling.quartz.SchedulerFactoryBean。JobDetail实例对应两个FactoryBean类,org.springframework.scheduling.quartz.JobDetailFactoryBean和org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean。Trigger实例对应两个FactoryBean类,org.springframework.scheduling.quartz.SimpleTriggerFactoryBean和org.springframework.scheduling.quartz.CronTriggerFactoryBean,SimpleTriggerFactoryBean对应生成SimpleTrigger实例,CronTriggerFactoryBean对应生成CronTrigger实例。
用MethodInvokingJobDetailFactoryBean创建的JobDetail实例不能序列化,不适于任务调度信息持久化的情况,所以说如果要持久化任务调度信息的话,只能用JobDetailFactoryBean来创建JobDetail实例。
这几项对应的spring配置文件内容如下:
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配置项不再起作用。
在spring-context-support-xxx.jar包中有对应的FactoryBean类,Scheduler实例对应org.springframework.scheduling.quartz.SchedulerFactoryBean。JobDetail实例对应两个FactoryBean类,org.springframework.scheduling.quartz.JobDetailFactoryBean和org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean。Trigger实例对应两个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配置项不再起作用。
相关文章推荐
- 使用Spring 整合 Quartz
- quartz学习使用心得(3)之spring与Quartz的整合
- 使用Spring整合Quartz轻松完成定时任务
- Quartz任务调度器及与Spring的整合使用
- Quartz任务调度框架和Spring的整合使用
- Quartz的简单使用和与Spring的整合
- Quartz与Spring的整合使用
- spring整合springquartz的定时器项目使用总结
- Spring整合quartz两种方式以及Spring轮询定时使用
- quartz与spring的整合使用
- Quartz与Spring的整合使用
- Spring和quartz整合的入门使用教程
- 使用spring整合Quartz实现―定时器功能
- Quartz学习笔记-Spring整合与简单使用
- quartz整合spring 相关配置及使用
- Quartz与Spring的整合使用
- Spring+Hibernate+Struts2整合Quartz, JOB中无法使用Spring注入
- quartz框架使用 && Spring整合quartz
- 在使用Spring整合Quartz中,如何关闭不断输出的内容?
- quartz与spring的整合使用