我們都知道任務調度可以用Quartz,但對於簡單的定時任務,可以直接用Spring內置的Schedule來實現。可以由兩種方式,注釋+XML配置
注解方式:
注解也要先在sping.xml配置文件中配置自動發現
XML中引入命名空間:
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
"
設置自動發現:
<!-- 啟動定時器 --> <task:annotation-driven/>
之后在方法中加了@Scheduled注解,就能讓該方法定時執行
@Scheduled(cron="0 33/3 * * * ?") //每小時的33分鍾開始執行,每3分鍾執行1次 public void start() throws ServletException { validate(); }
其實@Scheduled中可以指定如下3中時間表達式:
(1)fixedRate:每隔多少毫秒執行一次該方法。如:
@Scheduled(fixedRate=2000) // 每隔2秒執行一次 public void scheduleMethod(){ System.out.println("Hello world..."); }
(2)fixedDelay:當一次方法執行完畢之后,延遲多少毫秒再執行該方法。
(3)cron:詳細配置了該方法在什么時候執行。cron值是一個cron表達式。如:
@Scheduled(cron="0 0 0 * * SAT") public voidarchiveOldSpittles() { // ... }
XML配置方式
<task:scheduled-tasks> <task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/> </task:scheduled-tasks>
其中taskJob是對應的javaBean,job1是要定時執行的方法