接上一篇,原本我以為我實(shí)現(xiàn)的方式很簡(jiǎn)單了,在準(zhǔn)備寫(一)的時(shí)候,就去查了查別人是怎么實(shí)現(xiàn)定時(shí)任務(wù)的。不查還好,這一查,發(fā)現(xiàn)還有更簡(jiǎn)單的。所以就會(huì)有這篇文章。
本文主要是討論,在完成spring 項(xiàng)目搭建的情況下完成簡(jiǎn)單的定時(shí)任務(wù)實(shí)現(xiàn)。
在上一篇中,我們實(shí)現(xiàn)了“最簡(jiǎn)單”的定時(shí)任務(wù),在那里我們是基于maven管理包的依賴,依賴以下兩個(gè)包:
1
2
3
4
5
6
7
8
9
10
11
12
|
<!-- 定時(shí)器依賴 開始 --> <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> <!-- 定時(shí)器依賴 結(jié)束 --> |
原本我想著 新的方法可能不需要呢,于是試試注釋掉會(huì)怎么樣,于是就出現(xiàn)了這樣的情況:
顯然我想錯(cuò)了,正式開始:
第一步,在maven的pom文件中添加上文列出的兩個(gè)包;
第二步,在spring配置管理xml頭部中,添加命名空間(大部分文獻(xiàn)都是這樣寫的,但還沒有找到正式的說法,如果有我會(huì)再修改這個(gè)名詞的,現(xiàn)在暫且用著)
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配置文件中配置定時(shí)任務(wù)相關(guān)內(nèi)容
1
2
|
<task:annotation-driven scheduler= "kevinscheduler" /> <task:scheduler id= "kevinscheduler" pool-size= "5" /> |
第四步,完成業(yè)務(wù)邏輯實(shí)現(xiàn)類:
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秒執(zhí)行一次 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任務(wù)每10秒執(zhí)行一次進(jìn)入測(cè)試" ); } } |
這樣的方式比配置的更為簡(jiǎn)單,但是我認(rèn)為配置的方式會(huì)更加靈活,當(dāng)然實(shí)現(xiàn)的方式方法很多。我們只討論最簡(jiǎn)單的實(shí)現(xiàn),顯然這個(gè)是我看到的最簡(jiǎn)單的實(shí)現(xiàn)方法。
開啟服務(wù),我們來看看效果:
大致就這樣完成了,但是這里我發(fā)現(xiàn)好像遇到了上一篇文章結(jié)尾的時(shí)候,提到的同一時(shí)間點(diǎn)運(yùn)行了兩次代碼。我得再看看 ,如果有知道的朋友請(qǐng)給我留言!
下一篇是寫關(guān)于cron 表達(dá)式
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。