Spring框架下的定時任務quartz框架的使用


  手頭的這個項目需要用到定時任務,但之前沒接觸過這東西,所以不太會用,從網上找資料,大致了解了一下,其實也不難。Java的定時任務實現有三種,一種是使用JDK自帶的Timer那個類來實現,另一種是使用quartz框架來實現,最后一種是在項目使用Spring框架的情況下用Spring框架來實現。JDK自帶的類是單線程的,而且只能定義特定時間去執行任務,而不能指定任務執行的頻率,所以一般用的較少,只有處理一些簡單的程序才會用到。而quartz是一個輕量級的框架,支持多線程,支持定義頻率,所以非常方便。我目前手頭這個就是用了SSM框架,所以就用quartz來實現了。下面是詳細步驟。

1.在項目中導入jar包(之前看資料,別人說Spring框架自帶quartz,直接可以使用,但自己實踐時發現有幾個方法不存在,所以就下載jar包導入了)

Spring的jar包自然是必須的,然后在quartz官網下載jar包(Quartz 2.1.7),解壓后導入下面兩個包。

 

另外要說明的是,Spring框架中必須要有 spring-context-support-4.2.6.RELEASE.jar這個包,配置時好多類都依賴於這個包,所以必須得有。

后來還發現一個問題,就是spring-beans-4.2.6.RELEASE.jar這個jar包的版本不能太低,4.2.6沒問題,但目前已經經過測試得知3.0.5版本絕對會出現無法創建所需要的類的錯誤信息,出現這種錯誤只需要再加一個高版本的beans包就可以。

2.在Spring的配置文件頭部定義以下信息

1 xmlns:task="http://www.springframework.org/schema/task"
2 xsi:schemaLocation="http://www.springframework.org/schema/beans
3                     http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
4                     http://www.springframework.org/schema/task 
5                     http://www.springframework.org/schema/task/spring-task-3.0.xsd 

3.寫好自己需要執行的業務邏輯代碼

 1 package com.msq;
 2 
 3 public class  TestJobTask{  
 4     /** 
 5      *業務邏輯處理 
 6      */  
 7       public void   service(){  
 8           /**業務邏輯*/  
 9               System.out.println(System.currentTimeMillis());
10       }  
11 }

4.在Spring里面繼續作如下配置:

 1     <!-- 定時任務start -->
 2 
 3     <!-- 線程執行器配置,用於任務注冊 -->
 4     <bean id="executor"
 5         class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
 6         <property name="corePoolSize" value="10" />
 7         <property name="maxPoolSize" value="100" />
 8         <property name="queueCapacity" value="500" />
 9     </bean>
10 
11     <!-- 業務對象 -->
12     <bean id="testJobTask" class="com.msq.TestJobTask" />
13 
14     <!-- 調度業務 -->
15     <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
16         <property name="targetObject" ref="testJobTask" />
17         <property name="targetMethod" value="service" />
18     </bean>
19 
20     <!-- 增加調用的觸發器,觸發時間 -->
21     <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
22         <property name="jobDetail" ref="jobDetail" />
23         <property name="cronExpression" value="0/5 * * * * ? *" />
24     </bean>
25 
26     <!-- 設置調度 -->
27     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
28         <property name="triggers">
29             <list>
30                 <ref bean="cronTrigger" />
31             </list>
32         </property>
33         <property name="taskExecutor" ref="executor" />
34     </bean>
35 
36     <!-- 定時任務end -->

到此,就配置完了,部署項目到Tomcat,就可以運行了,可以看到在控制台每隔五秒就會輸出當前時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM