在很多實際的web應用中,都有需要定時實作的服務,如每天12點推送個新聞,每隔一個小時提醒使用者休息一下眼睛,隔一段時間檢測使用者是否離線等等。
spring架構提供了對定時器的支援,通過配置檔案就可以很好的實作定時器,隻需要應用啟動,就自動啟動定時器。下面介紹一下具體做法。
前期工作,配置spring的開發環境(這裡用到了spring的web應用包,需要導入)
首先建立定時器的任務類,定時器要做什麼工作,就在這裡寫什麼方法。
接着在配置檔案中對定時器進行配置。
最後還需要在web.xml中對配置資訊進行注冊:
這樣就完成了定時器的配置,這時啟動tomcat,觀察控制台輸出的結果:
(spring中一使用注解,感覺就是比其他方法友善了很多,代碼減少了很多)
這裡需要用到aop,需要引入aop類庫
先看定時器的任務類:
@scheduled(cron = "0/3 * * * * ?") 表示三秒推送一次
corn可以配置各種時段任務:
字段
值
特殊表示字元
年
一般為空,1970-2099
, - * /
月
1-12 或者 jan-dec
星期
1-7 或者 sun-sat
, - * ? / l c #
日
1-31
, - * ? / l w c
時
0-23
, - * /
分
0-59
秒
如: 配置每個工作日的10:20觸發 :"0 20 10 ? * mon-fri"
配置檔案:
配置檔案的頭部資訊中比上一個引入了
<task:annotation-driven scheduler="qbscheduler" mode="proxy"/>
<task:scheduler id="qbscheduler" pool-size="10"/>
這兩句配置資訊是必須要寫的,這是spring識别@scheduled注解的關鍵
這這樣簡單的幾句配置之後,開啟服務,運作結果:
spring中使用注解的方法完成定時器,不需要內建其他父類定時器,使用簡單友善!代碼量少,功能也很強大!