上篇博客講解了Quartz中核心概念,以及在J2SE中使用。見 http://www.linuxidc.com/Linux/2014-11/108906.htm
這篇博客開始介紹,在J2EE中Spring與Quartz的配置使用。
在操作時,注意版本問題,上篇博客也提到,Quartz中1.8版本中的JobDetail,SimpleTrigger,CornTrigger都是類,而在2.0.2版本中都是接口。若在與spring結合時,出現問題時,考慮到此問題。
Spring中如何配置Hibernate事務 http://www.linuxidc.com/Linux/2013-12/93681.htm
Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm
基於 Spring 設計並實現 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm
Spring-3.2.4 + Quartz-2.2.0集成實例 http://www.linuxidc.com/Linux/2013-10/91524.htm
使用 Spring 進行單元測試 http://www.linuxidc.com/Linux/2013-09/89913.htm
運用Spring注解實現Netty服務器端UDP應用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm
Spring 3.x 企業應用開發實戰 PDF完整高清掃描版+源代碼 http://www.linuxidc.com/Linux/2013-10/91357.htm
說明:本博客的具體實例中,spring3.0,quartz1.8版本。
本測試例子的Demo下載
------------------------------------------分割線------------------------------------------
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2014年資料/11月/3日/Spring配置Quartz任務調度框架教程/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割線------------------------------------------
步驟如下:
第一:把spring、quartz 相應的jar包,添加到項目中。
第二:web.xml中配置spring
第三:在spring配置文件中配置quartz任務調度
3.1:配置JobDetail
3.2:配置觸發器Trigger
3.3:配置任務調度Scheduler
注意:在spring配置quartz任務調度中的JobDetail時,有兩種方式配置。
1:編寫的job類,是個普通的類,不繼承任何spring或quartz中的類。
<!-- 第一種集成方式:MethodInvokingJobDetailFactoryBean,並且job類,直接是pojo類,與普通類沒有區別 -->
<!-- 定義具體的任務類 -->
<bean id="job" class="com.test.MyJob" />
<!-- 定義jobDetail -->
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 目標類 -->
<property name="targetObject">
<ref bean="job" />
</property>
<!-- 目標類中要執行的方法 ,這個參數是必須的-->
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
2:編寫的job類,需要繼承spring中的QuartzJobBean,其實QuartzJobBean類實現了Job接口,與上篇博客相同。
<!-- 第二種集成方式:MethodInvokingJobDetailFactoryBean,並且任務類,是需要繼承QuartzJobBean-->
<!-- 定義jobDetail -->
<bean id="jobDetail2" class="org.springframework.scheduling.quartz.JobDetailBean">
<!-- 目標類 -->
<property name="jobClass" value="com.test.MyJob2"></property>
<!-- 在這個例子中,jobDataAsMap沒有用,此目標類中接受的參數 ,若參數為service,則可以在此進行參數配置,類似struts2 -->
<!--<property name="jobDataAsMap">
<map>
<entry key="service"><value>simple is the beat</value></entry>
</map>
</property>-->
</bean>
具體的demo如下:
兩種不同的配置方式在spring中 配置文件中都已經注釋掉。
兩種自己編寫的任務類:
第一種:不繼承spring或quartz的類
package com.test;
import java.util.Date;
/**
* 需要執行的任務
* @author lhy
*
*/
public class MyJob{
//把要執行的操作,
public void execute() {
execute2();
}
public void execute2(){
System.err.println("測試Quartz"+new Date());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!-- 第一種集成方式:MethodInvokingJobDetailFactoryBean,並且job類,直接是pojo類,與普通類沒有區別 -->
<!-- 定義具體的任務類 -->
<bean id="job" class="com.test.MyJob" />
<!-- 定義jobDetail -->
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 目標類 -->
<property name="targetObject">
<ref bean="job" />
</property>
<!-- 目標類中要執行的方法 ,這個參數是必須的-->
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
<!-- 定義simpleTrigger觸發器 -->
<!-- <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="jobDetail"></property>
<property name="repeatCount">
<value>8</value>
</property>
<property name="repeatInterval">
<value>1000</value>
</property>
<property name="startDelay">
<value>4</value>
</property>
</bean> -->
<!-- 另一種觸發器是CornTrigger -->
<bean id="cornTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail"/>
<!-- 下午3點51分 -->
<property name="cronExpression" value="0 24 16 * * ? *"/>
</bean>
<!-- 定義核心調度器 -->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<ref bean="cornTrigger"/>
</property>
</bean>
</beans>
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-11/108907p2.htm