定時任務會重複執行倆次的解決方法

情景:在使用SpringMVC的定時任務的註解時,發現本身的定時任務會重複執行倆次。這是爲何呢? java

java代碼: web

 

spring-mvc.xml配置: spring

這樣配置完後,在啓動項目後,項目便能按照指定的時間,間隔半小時執行一次。任務是沒半小時執行了,可是每次會重複倆次插入操做。這讓我有些費解了。我上網搜索了一下相似的狀況的前輩們的解決方法,而後才知道緣由。 spring-mvc

 

緣由: mvc

任務在同一時刻執行了倆次,說明這個任務實例化了倆次。我看到網上大多數都是寫的緣由都是由於SpringMVC的配置文件,由於在web.xml中也引入了該文件而被實例化了倆次。原文以下:學習

可是我老是以爲這個理由不適合個人狀況。若是是由於在web中配置而致使實例化了倆次的話,那麼其餘的用@Component等註解的類,不也會實例化倆次嗎?可是我並無發現其重複實例化的現象。那麼說明,個人項目程序的配置沒有問題。那麼是什麼緣由致使個人定時任務被實例化了倆次呢?偶然間看到一個微博上寫的,若是太多配置寫在一個.xml文件中,會致使在掃描的時候,重複實例化。原做者語言以下:(以做往後參考) 測試

偶然間我鼠標放在了配置文件的一個標籤component-scan屬性上,我恍然大悟: spa

component-scan:掃描標籤會自動將擁有@Component註解的類實例化爲Bean,而在我定義的任務類上剛好有這麼個標籤!而在項目中,這個標籤早就已經引入使用了,而我再定義了一個,那麼就至關於將擁有@Component註釋的類實例化了倆次。即便掃描的包不一樣,可是先前定義的掃描範圍但是整個項目的。這樣一來,個人這個任務類至關於被實例化了倆次。那麼,直接把這個掃描配置刪了,不就成了? .net

 

解決: 3d

我直接將配置文件中我本身定義的那個自動掃描包的配置:

刪除,而後測試,果真,任務只執行了一次。到此,問題解決!

 

參考來源:

http://blog.csdn.net/chaijunkun/article/details/6925889

 

總結:

雖然在開發的時候用springMVC用的不少,可是對於spring的種種功能和配置,我仍是很糊塗的。這也說明了我springMVC基礎知識的薄弱性。springMVC的學習有待增強啊!

解決此類問題:

1)看配置文件是否有問題:這裏的配置文件指的是web.xml和spring-mvc間的配置,是否會致使實例化重複,若是有,就直接修改配置就行;

2)除開1)的情形,即web配置不會致使重複實例化的話,那麼就看spring-mvc.xml中的掃描配置是否有重疊的地方,若是有,將重疊的地方去掉就行。

相關文章
相關標籤/搜索