1、使用基於xml配置的spring定時器
首先編寫定時任務類mytask
publicclass
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:
@componentpublic
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 可用值詳細分析如下 字元可以用於所有字段,在 分 欄位中設為 表示 每一分鐘 的含義...