quartz定時排程
在包含了spring依賴包情況下加入quartz所依賴包:
org.quartz-schedulergroupid>
quartzartifactid>
2.2.1version>
dependency>
spring用的4.0.2版本
需要注意的是quartz的版本區別:1.x系列的對應的spring3.1版本以下,3.1以上的才支援2.x系列;
至於原因,則是spring對於quartz的支援實現,org.springframework.scheduling.quartz.crontriggerbean繼承了org.quartz.crontrigger,在quartz1.x系列中org.quartz.crontrigger是個類,而在quartz2.x系列中org.quartz.crontrigger變成了介面,從而造成無法用spring的方式配置quartz的觸發器(trigger).
網上都說配置方式比較靈活,這裡我也就採用了配置方式:
<?xml version="1.0" encoding="utf-8"?>
xmlns=""
xmlns:xsi=""
xsi:schemalocation=" /spring-beans-3.2.xsd">
id="startquertz"
lazy-init="false"
autowire="no"
class="org.springframework.scheduling.quartz.schedule***ctorybean">
name="triggers">
bean="msgdotime" />
list>
property>
bean>
id="msgdotime"
class="org.springframework.scheduling.quartz.crontrigge***ctorybean">
name="jobdetail">
bean="msgjobtask" />
property>
name="cronexpression">
0 0/1 * * * ?value>
property>
bean>
id="msgjobtask"
class="org.springframework.scheduling.quartz.methodinvokingjobdetailfactorybean">
name="targetobject">
bean="quartzmsg" />
property>
name="targetmethod">
initvalue>
property>
bean>
id="quartzmsg"
class="com.lizhu.crm.task.quartzmsgtask">
bean>
beans>
quartzmsgtask類為我們定時任務類,沒有繼承任何類和實現任何介面(當然可以用註解方式來宣告bean):
public
void
init()
cronexpression表示式備註:
秒 分 時 日 月 日期(週幾) 年(可選)
cron 觸發器利用一系列特殊字元,如下所示:
反斜線(/)字元表示增量值。例如,在秒字段中「5/15」代表從第 5 秒開始,每 15 秒一次。
問號(?)字元和字母 l 字元只有在月內日期和週內日期欄位中可用。問號表示這個欄位不包含具體值。所以,如果指定月內日期,可以在週內日期欄位中插入「?」,表示週內日期值無關 緊要。字母 l 字元是 last 的縮寫。放在月內日期欄位中,表示安排在當月最後一天執行。在週內日期欄位中,如果「l」單獨存在,就等於「7」,否則代表當月內週內日期的最後乙個實 例。所以「0l」表示安排在當月的最後乙個星期日執行。
在月內日期欄位中的字母(w)字元把執行安排在最靠近指定值的工作日。把「1w」放在月內日期欄位中,表示把執行安排在當月的第乙個工作日內。
井號(#)字元為給定月份指定具體的工作日例項。把「mon#2」放在週內日期欄位中,表示把任務安排在當月的第二個星期一。
星號(*)字元是通配字元,表示該欄位可以接受任何可能的值。
字段 允許值 允許的特殊字元
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / l w c
月份 1-12 或者 jan-dec , - * /
星期 1-7 或者 sun-sat , - * ? / l c #
年(可選) 留空, 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」 2023年的每天上午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: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」 2023年至2023年的每月的最後乙個星期五上午10:15觸發
「0 15 10 ? * 6#3」 每月的第三個星期五上午10:15觸發
每天早上6點
0 6 * * *
每兩個小時
0 /2 * *
晚上11點到早上8點之間每兩個小時,早上八點
0 23-7/2,8 * * *
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3
1月1日早上4點
0 4 1 1 *
Quartz定時 排程
org.quartz.scheduler類層次 作為乙個 quartz 使用者,你要與實現了 org.quartz.scheduler 介面的類互動。在你呼叫它的任何 api 之前,你需要知道如何建立乙個 scheduler 的例項。取而代之的是用了某個工廠方法來確保了構造出 sheduler 例項...
quartz的定時排程任務
在工作中遇到了利用quartz的定時排程任務,在此記錄下來,以備後用 上 1.在pom中引入quartz的檔案 org.quartz scheduler quartz 2.2.1 2.建乙個service配置排程 component public class sendfileschedulerser...
定時排程 Spring整合Quartz
定時排程就是設定時間規則,系統按照規則呼叫設定的功能函式。這個是我在專案中碰到的,大家用得到的就看看 有不足之處還請大家指出!不用謝!1 專案得新增spring框架 2 匯入quartz需要使用的jar包,總共是四個 quartz 1.6.0.jar spring 2.0.6.jar commons...