Quartz是純Java開發的工做任務調度框架,能夠與各類Java框架配合使用,也能夠獨立運行。通常在項目中實現定時任務。html
根據官方的描述Quartz能夠支持,一個、多個乃至萬個定時任務,我的不太敢這麼嘗試,若是那麼多定時任務的話,性能實在怕拖累了。不過也能夠看出Quartz對本身的性能是頗有自信的。java
本文講解在Spring環境下以註解的方式如何實現Quartz,用後發現這個簡單的實在不像話,哪像一個擁有如此強大功能的框架的配置過程啊,簡直是傻瓜型的。spring
在spring.xml文件中增長一行配置app
<task:annotation-driven></task:annotation-driven>
注意,這個配置用到了task標籤,所以須要在beans標籤上增長以下配置:框架
xmlns:task="http://www.springframework.org/schema/task"性能
在xsi:schemaLocation中增長:測試
http://www.springframework.org/schema/task spa
http://www.springframework.org/schema/task/spring-task.xsdcode
就這麼簡單,Quartz的配置就完成了xml
寫一個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分觸發(光棍節)