最近發現真的凹凸了,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 ...