Spring是一個(gè)開(kāi)放源代碼的設(shè)計(jì)層面框架,他解決的是業(yè)務(wù)邏輯層和其他各層的松耦合問(wèn)題,因此它將面向接口的編程思想貫穿整個(gè)系統(tǒng)應(yīng)用。Spring是于2003年興起的一個(gè)輕量級(jí)的Java開(kāi)發(fā)框架,由RodJohnson創(chuàng)建。簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)分層的JavaSE/EEfull-stack(一站式)輕量級(jí)開(kāi)源框架。下文為大家介紹spring定時(shí)器用法。
一、分類(lèi)
1.作業(yè)類(lèi)需要繼承特定的類(lèi)。特定的類(lèi)有:
org.springframework.scheduling.quartz.QuartzJobBean;
java.util.TimerTask.
2.作業(yè)類(lèi)就是自己定義的普通類(lèi)。
作業(yè)類(lèi)使用的觸發(fā)時(shí)間的方式主要有兩種。
1.在指定的時(shí)間調(diào)用。例如每天的每小時(shí)的15分,30分,45分,00分執(zhí)行任務(wù)。
org.springframework.scheduling.quartz.CronTriggerBean
2.每隔一段時(shí)間就調(diào)用。比如每過(guò)10分鐘就執(zhí)行一次特定的任務(wù)。
org.springframework.scheduling.quartz.SimpleTriggerBean
二、定時(shí)任務(wù)的主要步驟
1.導(dǎo)包

2.編寫(xiě)任務(wù)類(lèi)

3.配置文件中配置

解釋?zhuān)篴:當(dāng)容器加在該配置文件的時(shí)候,首先實(shí)例化任務(wù)調(diào)度工廠,調(diào)度工廠的triggers屬性是一個(gè)list,里面存放
所有用戶定義的任務(wù)。
b:找到這個(gè)任務(wù)后,會(huì)繼續(xù)找到這個(gè)任務(wù)的配置,這里是延遲0秒執(zhí)行調(diào)度,每隔1秒執(zhí)行該任務(wù),該任
務(wù)的名字是task1。
c:繼而找到task1代表的真正的定義類(lèi),也就是圖中配置文件中的第一個(gè)bean,其中的jobClass屬性要寫(xiě)
執(zhí)行任務(wù)類(lèi)的完整路徑,找到這個(gè)類(lèi)之后會(huì)自動(dòng)調(diào)用類(lèi)中重寫(xiě)的那個(gè)方法,并且執(zhí)行。
這種任務(wù)的觸發(fā)方式是每隔一段時(shí)間觸發(fā),假如你想要在指定的特定時(shí)間觸發(fā),則需要這樣配置:

僅僅是把上圖中的第二個(gè)bean換成這種方式,另外需要注意的是,任務(wù)調(diào)度工廠中的任務(wù)列表
List中要加入該任務(wù)《refbean=“cronTrigger”/》。而原來(lái)被替換的simpleTrigger要注釋掉。
但博文開(kāi)始就說(shuō)了任務(wù)分類(lèi)有兩種,這里只是繼承特定的類(lèi)這一種,還有一種就是作業(yè)類(lèi)就是自己而不需要繼承任何類(lèi)。
這里需要解釋的是,如果每次寫(xiě)作業(yè)類(lèi)都需要硬性繼承某個(gè)特定的類(lèi),就好像給代碼“綁架”了一樣,還要硬性去重寫(xiě)某個(gè)方法,
這個(gè)擴(kuò)展性就太差了。所以就有了第二種,不需要你繼承特定的類(lèi)重寫(xiě)特定的方法,而是由你自由定義,之所以做到了這一點(diǎn)是因?yàn)檫@部分邏輯被抽離了出來(lái),
寫(xiě)在了配置文件中。接下來(lái)就介紹這一種。
1.編寫(xiě)一個(gè)非常普通的類(lèi),沒(méi)有任何繼承,方法也是自己隨便定義的。

2.配置文件

首先我把這個(gè)類(lèi)當(dāng)作普通bean對(duì)象寫(xiě)在配置文件中。之后非常重要的一個(gè)配置是MethodInvokingJobDetailFactoryBean,它有兩個(gè)屬性,一個(gè)是目標(biāo)任務(wù)類(lèi)對(duì)象,一個(gè)
是目標(biāo)任務(wù)方法。注意這個(gè)方法value寫(xiě)的是方法名。不要有參數(shù)。
當(dāng)任務(wù)調(diào)度工廠執(zhí)行任務(wù)時(shí),根據(jù)這個(gè)配置找到要執(zhí)行的對(duì)象和方法。
最后把task加入到調(diào)度工廠的list中《refbean=“task”/》即可,除此之外還有一個(gè)更加簡(jiǎn)單的配置方法:
1.任務(wù)類(lèi)

2.配置

這種方式非常的簡(jiǎn)潔,只需要配置task標(biāo)簽即可。但特別注意的前提是spring配置文件表頭一定要加上:
xmlns:task=“http://www.springframework.org/schema/task”
xsi:schemaLocation=“
http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-4.0.xsd”
這種方式不需要你把它配置到任務(wù)調(diào)度工廠中就可以執(zhí)行。其實(shí)正如你看到的,scheduled-tasks標(biāo)簽
就相當(dāng)于一個(gè)任務(wù)集合工廠,里面的《task:scheduled》才是一個(gè)個(gè)任務(wù)。
以上是我介紹的全部使用方式了。
任務(wù)類(lèi)兩種,一種是要繼承和重寫(xiě),一種自己定義普通類(lèi)普通方法。
觸發(fā)時(shí)間方式兩種,一種間隔時(shí)間,一種指定特定時(shí)間。
當(dāng)配置task標(biāo)簽來(lái)指定的時(shí)候,要注意配置文件頭需添加一些關(guān)于task的聲明標(biāo)簽。
電子發(fā)燒友App

























評(píng)論