Spring集成Quartz定時器實現定時作業任務

PAZFay 8年前發布 | 39K 次閱讀 Quartz 作業調度框架

來自: http://blog.csdn.net//chenleixing/article/details/43319193


       這篇文章有點久遠了,記得是第一次出來實習時,大三暑假自己找了一家軟件公司實習了很長時間,當時學到很多實踐性的東西,這個Quartz就是其中一個,還記得是做OA,一些消息需要定時提醒定時刪除,項目框架里也沒有,當時經驗不足也沒接觸過這樣類似的東西,所以用了整一下午的時間算是基本搞定了吧,今天很有興致,找出這篇大學時寫過的幾篇文章分享出來,內容如下:

1、 創建一個定時任務并繼承類QuartzJobBean并實現其方法executeInternal(JobExecutionContext context)需要定時的任務嵌入其中:

</tr>

</tbody> </table>

 

2、 spring配置文件中配置(每個小時的第一分鐘觸發執行任務):

package com.test;

 

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

import com.test.StarShopManager;

 

public class TestJob extends QuartzJobBean {

//引用的service(可以多個)

private StarShopManager starShopManager;

@Override

protected void executeInternal(JobExecutionContext context)

throws JobExecutionException {

    //添加定時任務程序

            starShopManager.update(starshopdo);

}

public void setStarShopManager(StarShopManager starShopManager) {

this.starShopManager = starShopManager;

}

}

</tr>

</tbody> </table>

 

3、 CronTriggerBean觸發器表達式解析即(<value>0 * * * ?</value>

1.反斜線(/)字符表示增量值。例如,在秒字段中“5/15”代表從第 秒開始,每 15 秒一次。 

2.問號(?)字符和字母 字符只有在月內日期和周內日期字段中可用。問號表示這個字段不包含具體值。所以,如果指定月內日期,可以在周內日期字段中插入“?”,表示周內日期值無關緊要。字母 字符是 last 的縮寫。放在月內日期字段中,表示安排在當月最后一天執行。在周內日期字段中,如果“L”單獨存在,就等于“7”,否則代表當月內周內日期的最后一個實例。所以“0L”表示安排在當月的最后一個星期日執行。 

3.在月內日期字段中的字母(W)字符把執行安排在最靠近指定值的工作日。把“1W”放在月內日期字段中,表示把執行安排在當月的第一個工作日內。 

4.井號(#)字符為給定月份指定具體的工作日實例。把“MON#2”放在周內日期字段中,表示把任務安排在當月的第二個星期一。 

5.星號(*)字符是通配字符,表示該字段可以接受任何可能的值。

例子:

"0 0 12 * * ?" 每天中午12點觸發 

"0 15 10 ? * *" 每天上午10:15觸發 

"0 15 10 * * ?" 每天上午10:15觸發 

"0 15 10 * * ? *" 每天上午10:15觸發 

"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發 

"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鐘觸發 

"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發 

"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發 

"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發 

"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:102:44觸發 

"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發 

"0 15 10 15 * ?" 每月15日上午10:15觸發 

"0 15 10 L * ?" 每月最后一日的上午10:15觸發 

"0 15 10 ? * 6L" 每月的最后一個星期五上午10:15觸發 

"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個星期五上午10:15觸發 

"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發 



轉載請注明—作者:Java我人生(陳磊興)   原文出處:http://blog.csdn.net/chenleixing/article/details/43319193


??
??

 本文由用戶 PAZFay 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!

<!—配置定時任務-->

<bean id="testJob" class="org.springframework.scheduling.quartz.JobDetailBean">

<property name="jobClass">

<value>com.test.TestJob</value>

</property>

<property name="jobDataAsMap">

<map>

                 <!—不是spring 管理的service需要放到這里-->

<entry key="timeout">

<value>5</value>

</entry>

</map>

</property>

</bean>

 

 

<!—調度定時任務,這里使用了CronTirgger觸發器-->

<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

<property name="jobDetail">

<ref bean="testJob" />

</property>

<property name="cronExpression">

<value>0 * * * ?</value>

</property>

</bean>

<bean id="test"

class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="schedulerContextAsMap">

<map>

<!-- spring 管理的service需要放到這里,才能夠注入成功 -->

<description>schedulerContextAsMap</description>

 <entry key="starShopManager" value-ref="StarShopManager" />

</map>

</property>

<property name="triggers">

<list>

<ref bean="testTrigger" />

</list>

</property>

</bean>

  • sesese色