接上一篇,原本我以為我實現的方式很簡單了,在準備寫(一)的時候,就去查了查別人是怎么實現定時任務的。不查還好,這一查,發現還有更簡單的。所以就會有這篇文章。
本文主要是討論,在完成spring 項目搭建的情況下完成簡單的定時任務實現。
在上一篇中,我們實現了“最簡單”的定時任務,在那里我們是基于maven管理包的依賴,依賴以下兩個包:
1
2
3
4
5
6
7
8
9
10
11
12
|
<!-- 定時器依賴 開始 --> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-context-support</artifactid> <version> 4.0 . 2 .release</version> </dependency> <dependency> <groupid>org.quartz-scheduler</groupid> <artifactid>quartz</artifactid> <version> 2.2 . 1 </version> </dependency> <!-- 定時器依賴 結束 --> |
原本我想著 新的方法可能不需要呢,于是試試注釋掉會怎么樣,于是就出現了這樣的情況:
顯然我想錯了,正式開始:
第一步,在maven的pom文件中添加上文列出的兩個包;
第二步,在spring配置管理xml頭部中,添加命名空間(大部分文獻都是這樣寫的,但還沒有找到正式的說法,如果有我會再修改這個名詞的,現在暫且用著)
1
2
3
|
<beans xmlns:task= "http://www.springframework.org/schema/task" xsi:schemalocation="http: //www.springframework.org/schema/task http: //www.springframework.org/schema/task/spring-task-4.1.xsd "> |
第三步,在spring配置文件中配置定時任務相關內容
1
2
|
<task:annotation-driven scheduler= "kevinscheduler" /> <task:scheduler id= "kevinscheduler" pool-size= "5" /> |
第四步,完成業務邏輯實現類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.text.dateformat; import java.text.simpledateformat; import java.util.concurrent.timeunit; import org.joda.time.datetime; import org.springframework.scheduling.annotation.scheduled; import org.springframework.stereotype.component; @component public class atask { @scheduled (cron= "0/10 * * * * ? " ) //每10秒執行一次 public void atask(){ try { timeunit.seconds.sleep( 20 ); } catch (interruptedexception e) { e.printstacktrace(); } dateformat sdf = new simpledateformat( "yyyy-mm-dd hh:mm:ss" ); system.out.println(sdf.format(datetime.now().todate())+ "*********a任務每10秒執行一次進入測試" ); } } |
這樣的方式比配置的更為簡單,但是我認為配置的方式會更加靈活,當然實現的方式方法很多。我們只討論最簡單的實現,顯然這個是我看到的最簡單的實現方法。
開啟服務,我們來看看效果:
大致就這樣完成了,但是這里我發現好像遇到了上一篇文章結尾的時候,提到的同一時間點運行了兩次代碼。我得再看看 ,如果有知道的朋友請給我留言!
下一篇是寫關于cron 表達式
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。