Quartz定時排程

2021-07-22 12:35:41 字數 3399 閱讀 9656

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...