Spring 自動(dòng)定時(shí)任務(wù)配置_第1頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、spring 自動(dòng)定時(shí)任務(wù)配置org.springframework.scheling.quartz.methodinvokingjobdetailfactorybean -配置需要調(diào)度的bean的某個(gè)辦法 org.springframework.schuling.quartz.simpletriggerbean -定時(shí)器,負(fù)責(zé)配置啟動(dòng)時(shí)光、執(zhí)行周期 org.springframework.scheduling.quartz.schedulerfactorybean -觸發(fā)器,負(fù)責(zé)配置全部定時(shí)器 實(shí)例如下: bean = taskservice ' target='_blank

2、'>mrd.task.taskservice /bean bean id= autotask class = org.springframework.scheduling.quartz.methodinvokingjobdetailfactorybean property name= targetobject ref bean= taskservice / /property property name= targetmethod value dotask /value /property /bean bean id= autotasktrigger ' target=&

3、#39;_blank'>triggersstarter > 注重以上4個(gè)bean需要按挨次配置,從配置屬性的字面意思,應(yīng)當(dāng)很簡(jiǎn)單理解詳細(xì)的參數(shù)含義。 另外對(duì)schedulerfactorybean的用法需要注重以下幾個(gè)方面: 1、schedulerfactorybean會(huì)自動(dòng)啟動(dòng)。 當(dāng)在spring文件中定義了多個(gè)schedulerfactorybean實(shí)例時(shí),一定要當(dāng)心,由于這些schedulefactorybean自從load進(jìn)程序里,就會(huì)自動(dòng)啟動(dòng)。假如要手動(dòng)控制,注重要將autostartup屬性設(shè)置為fae。 2、schedulerfactorybean裸露的是sc

4、heduler,而不是schedulerfactorybean。 schedulerfactorybean實(shí)現(xiàn)了factorybean接口,必需實(shí)現(xiàn)兩個(gè)辦法,一個(gè)是getobjecttype,另外一個(gè)則是getobject;其中g(shù)etobjecttype定義了返回的類型應(yīng)當(dāng)為scheduler,而getobject指定了返回的是其一個(gè)重要屬性scheduler,這個(gè)scheduler就是我們要獲得的調(diào)度。 若在配置文件里為schedulerfactorybean定義了id屬性為 scheduler ,則在程序里調(diào)用getbean時(shí),需要注重getbean( scheduler )返回的是sch

5、eduler對(duì)象 schedulerfactorybean中有兩個(gè)很重要的屬性,一個(gè)是scheduler,另外一個(gè)是schedulerfactoryclass,spring通過用schedulerfactoryclass做代理來產(chǎn)生調(diào)度,并把它賦給scheduler。 private class schedulerfactoryclass = stdschedulerfactory.class; /假如你沒有指定schedulerfactoryclass ,那么它用的是quartz中自帶的調(diào)度工廠, this.scheduler = createscheduler(schedulerfacto

6、ry, this.schedulername); /這里的schedulername默認(rèn)傳進(jìn)來是空的,其實(shí)假如你不是用自己定義的schedulerfactoryclass /唯恐也沒有什么意義,由于createscheduler是這樣調(diào)用的 return schedulerfactory.getscheduler(); /明顯schedulername并沒實(shí)用到,除非是你自行寫一個(gè)schedulerfactory,并做好相應(yīng)處理, /否則返回的這個(gè)scheduler一定是一個(gè)指定名稱的調(diào)度 scheduler sched = schedrep.up(getschedulername(); /這

7、個(gè)sched就是要代理生成的scheduler,getschedulername惟獨(dú)一句話,如下: cfg.getstringproperty(prop_sched_instance_name, quartzscheduler /假如我們沒有用法一些特別的機(jī)制,那么返回的只能是一個(gè)固定的字符串。 如上說述,假如我們希翼不舉行改造,就在spring的配置文件中定義多個(gè)調(diào)度的辦法來實(shí)現(xiàn)我們共性化的任務(wù)支配時(shí),可能并不行行。由于spring配置的scheduler只能有一個(gè),即使你定義了多個(gè)調(diào)度,那么其實(shí)實(shí)現(xiàn)的惟獨(dú)一個(gè),只是全部你希翼指向不同調(diào)度的id都會(huì)指向它罷了,而這個(gè)調(diào)度會(huì)包含了其它全部調(diào)度中

8、的任務(wù)。 4、抱錯(cuò):org.quartz.schedulerexception: repeat interval cannot be zero 場(chǎng)景:該錯(cuò)誤通常是在引用了simpletriggerbean的時(shí)候沒有為repeatcount和repeatinterval賦 發(fā)生的,很驚奇,simpletriggerbean有一個(gè)空構(gòu)造函數(shù),在里面挺直為repeatcount賦了一個(gè)repeat_indefinitely,這樣,當(dāng)其進(jìn)入vali函數(shù)時(shí),會(huì)抱錯(cuò)。而quartz中的simpletrigger這兩個(gè)屬性默認(rèn) 均為0,不懂spring中為何這樣處理。 5、quartz和的區(qū)分 a、quartz屬于用戶級(jí)別,crontab則屬于系統(tǒng)級(jí)別; b、quartz調(diào)度的線程,全部線程分享一個(gè)jvm;crontab調(diào)度的則是應(yīng)用,每個(gè)應(yīng)用都自立的占用資源。 6、quartz中加入并發(fā)多線程分析 a、quartz本身是有線程池支持的,這個(gè)可以用org.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論