java定時器2 spring實現

2021-09-23 13:54:00 字數 4258 閱讀 8221

1、使用基於xml配置的spring定時器

首先編寫定時任務類mytask

public

class

mytask

}

接著在spring配置檔案中加入xmlns:task="

"命名空間

<

task:annotation-driven

/>

<

bean

id="mytask"

class

="com.pptv.vipbackend.controller.mytask"

/>

<

task:scheduled-tasks

>

<

task:scheduled

ref="mytask"

cron

="*/5 * * * * ?"

method

="print"

/>

task:scheduled-tasks

>

當然,定時任務類要加入spring的管理中

<

context:component-scan

base-package

="com.simonsfan.study.controller.mytask"

>

執行便可看到效果

2、使用基於註解配置的spring定時器

基於註解會相對簡單的多,直接編寫任務類mytask:

@enablescheduling  

@component

public

class

mytask

}

當然,任務類也要納入spring管理

<

context:component-scan

base-package

="com.simonsfan.study.controller.mytask"

>

<

task:annotation-driven

/>

啟動可以看到相同效果

3、quartz定時器,其效能和靈活性都優於jdk的timertask類

pom檔案中加入

<

dependency

>

<

groupid

>org.quartz-scheduler

groupid

>

<

artifactid

>quartz

artifactid

>

<

version

>2.2.2

version

>

dependency

>

定時任務類mytask:

@component  

public

class

mytask

}

spring配置檔案中加入:

<

bean

id="jobbean"

class

="com.pptv.vipbackend.controller.mytask"

/>

<

bean

id="myjobdetail"

class

="org.springframework.scheduling.quartz.methodinvokingjobdetailfactorybean"

>

<

property

name

="targetobject"

>

<

ref

bean

="jobbean"

/>

property

>

<

property

name

="targetmethod"

>

<

value

>execute

value

>

property

>

<

property

name

="concurrent"

value

="false"

/>

bean

>

<

bean

id="******trigger"

class

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

>

<

property

name

="jobdetail"

ref="myjobdetail"

/>

<

property

name

="startdelay"

value

="1000"

/>

<

property

name

="repeatinterval"

value

="2000"

/>

bean

>

<

bean

id="startquertz"

class

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

lazy-init

="false"

autowire

="no"

>

<

property

name

="triggers"

>

<

list

>

<

ref

bean

="******trigger"

/>

list

>

property

>

bean

>

這樣,基於spring + quartz便可實現定時任務的排程

定時任務中的時間表示式:

順序:秒

分鐘小時

日期月份

星期年(可選)

取值:0-59

0-59

0-23

1-30(31)

1-12

1-7允許特殊字元:

, - * /

, - * /

, - * /

, - * / ? l w c

, - * /

, - * / l # c

1970-2099 , - * /

字段含義

*:代表所有可能的值  

-:指定範圍

,:列出列舉 例如在分鐘裡,"5,15"表示5分鐘和20分鐘觸發

/:指定增量 例如在分鐘裡,"3/15"表示從3分鐘開始,沒隔15分鐘執行一次

?:表示沒有具體的值,使用?要注意衝突

l:表示last,例如星期中表示7或sat,月份中表示最後一天31或30,6l表示這個月倒數第6天,fril表示這個月的最後乙個星期五

w:只能用在月份中,表示最接近指定天的工作日

#:只能用在星期中,表示這個月的第幾個週幾,例如6#3表示這個月的第3個周五

0 * * * * ? 每1分鐘觸發一次

0 0 * * * ? 每天每1小時觸發一次

0 0 10 * * ? 每天10點觸發一次

0 * 14 * * ? 在每天下午2點到下午2:59期間的每1分鐘觸發

0 30 9 1 * ? 每月1號上午9點半

0 15 10 15 * ? 每月15日上午10:15觸發

*/5 * * * * ? 每隔5秒執行一次

0 */1 * * * ? 每隔1分鐘執行一次

0 0 5-15 * * ? 每天5-15點整點觸發

0 0/3 * * * ? 每三分鐘觸發一次

posted @

2018-03-10 14:26

路迢迢 閱讀(

...)

編輯收藏

spring定時器分析

spring定時器如何使用?步驟1.定義job bean 1.taskscheduler構造 2.初始化相關服務 步驟2.定義乙個joblist bean來統一管理job 步驟3.定義job factorybean和crontriggerbean 定時任務列表 啟動方法 指定最終封裝出的任務是否有狀...

spring 定時器配置

spring 中配置定時器 如果是乙個普通的類,不需要注入dao層 上面的兩個bean節點根據自己的情況任選乙個,下面的bean節點都是需要的。0 0 0,12 時間的配置如下 0 26 16 value 時間大小由小到大排列,從秒開始,順序為 秒,分,時,天,月,年 為任意 為無限制。由此上面所配...

Spring 配置定時器

各個時間可用值如下 秒 0 59 分 0 59 小時 0 23 日 1 31 l w c 月 1 12 or jan dec 週幾 1 7 or sun sat l c 年 可選字段 empty,1970 2099 可用值詳細分析如下 字元可以用於所有字段,在 分 欄位中設為 表示 每一分鐘 的含義...