Spring任務排程器之Task的使用

2021-07-14 10:19:30 字數 2123 閱讀 6345

最近發現真的凹凸了,spring公升級到3後原來已經自帶任務排程器了,之前還一直使用著quartz。其實也不是quartz不好,只是相比之下,使用spring task真的簡單很多,無論是理解還是使用。

spring task提供兩種方式進行配置,正如大家所想吧,還是一種是annotation(標註),而另外一種就是xml配置了。但其實這裡我覺得比較尷尬,因為任務排程這樣的需求,通常改動都是比較多的,如果用annotation的方式的話,改動就變得麻煩了,必須去重新編譯。所以,我只是選擇用xml配置的方式,不過我還是習慣性地啟用著標註方式,就如aop配置那樣。annotation方式請自行查詢@scheduled

具體配置參考如下即可

xml**  

xmlversion="1.0"

encoding="utf-8"

?>

<

beans

xmlns=""

xmlns:xsi=""

xmlns:task=""

xsi:schemalocation="  

/spring-beans.xsd  

/spring-task.xsd">

<

bean

id="reminderprocessor"

class="com.foo.task.reminderprocessor"

>

<

property

name="workers"

>

<

array

value-type="com.foo.task.worker"

>

<

refbean="projectscheduleremindworker"

/>

array

>

property

>

bean

>

<

task:executor

id="executor"

pool-size="3"

/>

<

task:scheduler

id="scheduler"

pool-size="3"

/>

<

task:annotation-driven

scheduler="scheduler"

executor="executor"

proxy-target-class="true"

/>

<

task:scheduled-tasks

scheduler="scheduler"

>

<

task:scheduled

ref="reminderprocessor"

method="process"

cron="0 0 12 * * ?"

/>

task:scheduled-tasks

>

beans

>

核心部分見

xml**  

<

task:scheduled-tasks

scheduler="scheduler"

>

<

task:scheduled

ref="reminderprocessor"

method="process"

cron="0 0 12 * * ?"

/>

task:scheduled-tasks

>

意思就是每天的12點執行reminderprocessor這個bean中的process方法。cron的配置表示式跟quartz基本一致,但實測不支援一些特殊字元,如配置天的時候的l,w和z,因為遇到要每個月倒數第三天執行任務排程的需求,但我一配置springtask報非法字元。

所以,quartz和springtask間的差距也顯而易見的。springtask用起來十分簡單,畢竟是spring自家的,雖然跟quartz也可以實現結合,但沒那麼簡單。而springtask功能也沒quartz強大,quartz的集群和高階特性多的去了。所以大家可以自行選擇了。不過一般情況下,覺得springtask足夠了。

附上我這個例子的詳細uml說明

spring任務排程器quartz

時間引數配置列表 關於cronexpression表示式,這裡講解一下 字段 允許值 允許的特殊字元 秒 0 59 分 0 59 小時 0 23 日期 1 31 l w c 月份 1 12 或者 jan dec 星期 1 7 或者 sun sat l c 年 可選 留空,1970 2099 表示式意...

Spring任務排程器之Task的使用

最近發現真的凹凸了,spring公升級到3後原來已經自帶任務排程器了,之前還一直使用著quartz。其實也不是quartz不好,只是相比之下,使用spring task真的簡單很多,無論是理解還是使用。spring task提供兩種方式進行配置,正如大家所想吧,還是一種是annotation 標註 ...

Spring 任務排程

spring 任務排程 spring內部有乙個task是spring自帶的乙個設定時間自動任務排程task使用的時候很方便,但是他能做的東西不如quartz那麼的多!可以使用註解和配置兩種方式,配置的方式如下 2 註冊bean class com.yhb.jsxn.task.taskjobimpl ...