Spring 定時任務功能

1:需要的jar包:
       Spring的包自然不必說了;
       quartz.jar;
       jta.jar;
       commons-collections.jar;
       這裏Spring用到了Quartz, 它是一個開源的作業調度框架,它完全由Java寫成,並設計用於J2SE和J2EE應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來爲執行一個作業而創建簡單的或複雜的調度。
2:創建任務類(就是一個普通的JAVA BEAN):例如:
public class TestTimerTask {
    public void execute(){
        System.out.println("開始後臺用戶資料預處理......");
    }
}
通常定時任務都是後臺處理業務,這個類裏的方法就是我們想讓它定時執行的;
3:spring裏的配置如下示例代碼:
     <bean id="TimerTask"
         class="com.spr.spring.bean.TestTimerTask"/><!—這裏就是上面定義的BEAN-->
     <bean id="scheduledInfo"
         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
         <property name="targetObject">
              <ref bean="TimerTask"/>
         </property>
         <property name="targetMethod"><!—這裏定義要調用的方法-->
              <value>execute</value>
         </property>
     </bean>
     <bean id="cronInfoTrigger"
         class="org.springframework.scheduling.quartz.CronTriggerBean">
         <property name="jobDetail">
              <ref bean="scheduledInfo"/>
         </property>
         <property name="cronExpression">
              <value>0 * * * *  </value>    
              <!—以上的說明見附錄 這裏是每分鐘的0秒時執行操作-->
         </property>
     </bean>
     <bean autowire="no"
         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
         <property name="triggers">
              <list>
                   <ref bean="cronInfoTrigger"/>
              </list>
         </property>
     </bean>
需要說明的是最後一個BEAN是管理這些觸發器的總設置,他管理我們的觸發器列表。一定要把autowire設置爲no。“cronInfoTrigger”這是一個觸發器的bean的設置,裏面的cronExpression就是定義什麼時候執行觸發的,語法比較不好理解。
4:一般的SPRING項目都要在web.xml裏設置如下內容:
       <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
     </context-param>
     <!-- servlet>
         <servlet-name>context</servlet-name>
         <servlet-class>
              org.springframework.web.context.ContextLoaderServlet
         </servlet-class>
         <load-on-startup>1</load-on-startup>
     </servlet-->
     <listener>
         <listener-class>
              org.springframework.web.context.ContextLoaderListener
     </listener-class>
     </listener>


*******************************************************************************

一個cron表達式有至少6個(也可能是7個)由空格分隔的時間元素。從左至右,這些元素的定義如下:

1.秒(0–59)

2.分鐘(0–59)

3.小時(0–23)

4.月份中的日期(1–31)

5.月份(1–12或JAN–DEC)

6.星期中的日期(1–7或SUN–SAT)

7.年份(1970–2099)

每一個元素都可以顯式地規定一個值(如6),一個區間(如9-12),一個列表(如9,11,13)或一個通配符(如*)。“月份中的日期”和“星期中的日期”這兩個元素是互斥的,因此應該通過設置一個問號(?)來表明你不想設置的那個字段。表7.1中顯示了一些cron表達式的例子和它們的意義:

表7.1                                            一些cron表達式的例子

表  達  式
 意    義
 
0 0 10,14,16 * *  
 每天上午10點,下午2點和下午4點
 
0 0,15,30,45 * 1-10 *  
 每月前10天每隔15分鐘
 
30 0 0 1 1   2012
 在2012年1月1日午夜過30秒時
 
0 0 8-5   * MON-FRI
 每個工作日的工作時間
 

 

對於cronReportTrigger,我們設置cronExpression爲0 0 6 * *  可以把它讀作“在任何月份任何日期(不管是星期幾)的6時0分0秒執行觸發器。”換句話說,這個觸發器會在每天早晨6:00執行。

 

發佈了108 篇原創文章 · 獲贊 22 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章