歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Spring配置Quartz任務調度框架教程

上篇博客講解了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

Copyright © Linux教程網 All Rights Reserved