Quartz定時任務
Quartz是純Java開發的工作任務調度框架,可以與各種Java框架配合使用,也可以獨立運行。一般在項目中實現定時任務。
根據官方的描述Quartz可以支持,一個、多個乃至萬個定時任務,個人不太敢這麽嘗試,如果那麽多定時任務的話,性能實在怕拖累了。不過也可以看出Quartz對自己的性能是很有自信的。
本文講解在Spring環境下以註解的方式如何實現Quartz,用後發現這個簡單的實在不像話,哪像一個擁有如此強大功能的框架的配置過程啊,簡直是傻瓜型的。
在spring.xml文件中增加一行配置
<task:annotation-driven></task:annotation-driven>
註意,這個配置用到了task標簽,因此需要在beans標簽上增加如下配置:
xmlns:task="http://www.springframework.org/schema/task"
在xsi:schemaLocation中增加:
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd
就這麽簡單,Quartz的配置就完成了
寫一個Quartz的測試類和方法
代碼如下:
package com.wskj.app.quartz; import java.util.Date;import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class TestQuartz { @Scheduled(cron = "*/4 * * * * ? ") public void printab(){ System.out.println("Hello,"+new Date()); } }
解釋說明:
@Component註解:通知Spring,該類將願意被Spring作為一個組件管理。
@Scheduled註解:聲明這是一個定時執行的任務。
cron屬性:定義了CronTrigger,什麽時間觸發執行。
CronTrigger解釋
CronTrigger配置完整格式為: [秒] [分] [小時] [日] [月] [周] [年]
序號 說明 是否必填 允許填寫的值 允許的通配符
1 秒 是 0-59 , - * /
2 分 是 0-59 , - * /
3 小時 是 0-23 , - * /
4 日 是 1-31 , - * ? / L W
5 月 是 1-12 or JAN-DEC , - * /
6 周 是 1-7 or SUN-SAT , - * ? / L #
7 年 否 empty 或 1970-2099 , - * /
舉例如下:
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分每分觸發
0 0/5 14 * * ? 每天下午的 2點到2點59分(整點開始,每隔5分觸發)
0 0/5 14,18 * * ? 每天下午的 2點到2點59分、18點到18點59分(整點開始,每隔5分觸發)
0 0-5 14 * * ? 每天下午的 2點到2點05分每分觸發
0 10,44 14 ? 3 WED 3月分每周三下午的 2點10分和2點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 每月的第三周的星期五開始觸發
0 0 12 1/5 * ? 每月的第一個中午開始每隔5天觸發一次
0 11 11 11 11 ? 每年的11月11號 11點11分觸發(光棍節)
本文摘自:http://www.jiisb.com/www/article/art_124.html
Quartz定時任務