Spring整合Quartz定時器實現定時作業任務

2021-06-28 12:27:02 字數 4531 閱讀 4745

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

1、 

建立乙個定時任務並繼承類

quartzjobbean

並實現其方法

executeinternal(jobexecutioncontext context)

需要定時的任務嵌入其中:

package

com.

test

;import

org.quartz.jobexecutioncontext;

import

org.quartz.jobexecutionexception;

import

org.springframework.scheduling.quartz.quartzjobbean;

import

com.

test

.starshopmanager;

public

class

testj

ob extends

quartzjobbean 

public

void

setstarshopmanager(starshopmanager starshopmanager) 

}2、 

在spring

配置檔案中配置(每個小時的第一分鐘觸發執行任務):

配置定時任務

-->

<

beanid=

"test

job"

class

="org.springframework.scheduling.quartz.jobdetailbean"

>

<

property

name

="jobclass"

>

<

value

>

com.test.test

jobvalue

>

property

>

<

property

name

="jobdataasmap"

>

<

map>

不是spring 管理的

service

需要放到這裡

-->

<

entry

key=

"timeout"

>

<

value

>

5value

>

entry

>

map>

property

>

bean

>

排程定時任務,這裡使用了crontirgger

觸發器-->

<

beanid=

"test

trigger"

class

="org.springframework.scheduling.quartz.crontriggerbean"

>

<

property

name

="jobdetail"

>

<

refbean="

test

job"

/>

property

>

<

property

name

="cronexpression"

>

<

value

>0 0

* * * ?

value

>

property

>

bean

>

<

beanid=

"test

"class

="org.springframework.scheduling.quartz.schedule***ctorybean"

>

<

property

name

="schedulercontextasmap"

>

<

map>

<

description

>

schedulercontextasmap

description

>

<

entry

key=

"starshopmanager"

value-ref

="starshopmanager"

/>

map>

property

>

<

property

name

="triggers"

>

<

list

>

<

refbean="

test

trigger"

/>

list

>

property

>

bean

>

3、 crontriggerbean

觸發器表示式解析即(

<

value

>0 0

* * * ?

value

>)1.

反斜線(/

)字元表示增量值。例如,在秒字段中

「5/15」

代表從第 

5 秒開始,每 

15 秒一次。 

2.問號(?

)字元和字母 

l 字元只有在月內日期和週內日期欄位中可用。問號表示這個欄位不包含具體值。所以,如果指定月內日期,可以在週內日期欄位中插入

「?」,表示週內日期值無關緊要。字母 

l 字元是 

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" 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年至

2005

年的每月的最後乙個星期五上午

10:15

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

10:15

觸發 

43319193



SpringMVC整合quartz,實現定時任務

org.quartz scheduler quartz 1.8.4 public class timetask 時間的配置如下 0 26 16 value 時間大小由小到大排列,從秒開始,順序為 秒,分,時,天,月,年 為任意 為無限制。由此上面所配置的內容就是,在每天的16點26分啟動znrwdb...

Spring整合使用quartz

spring已經整合了quartz,在spring中使用quartz的一般步驟為 1.實現任務類 public class productadschedulemanagerimpl 2.在spring xml 配置檔案中配置任務類bean 3.在spring xml 配置檔案中配置methodinv...

Spring框架整合Quartz

首先編寫任務類,該類繼承quartzjobbean父類,並在其實現方法內編寫job任務 配置spring的xml檔案,配置觸發器,以及排程器的bean jobdetail class org.springframework.scheduling.quartz.jobdetailbean name j...