@Scheduled不執行的原因
阿新 • • 發佈:2018-11-04
. 今天用@Schedule做了一個定時任務,希望凌晨1點執行,程式碼如下
@Service public class ParseJsonService { @Scheduled(cron = "0 0 1 * * ?") public void parseMongodbDataToJson() { } }
第二天來公司了,發現根本沒有執行。然後開始查詢問題
2. 首先遇到查到的一個解決方案說是spring的版本的問題,我看了下我以前用的定時任務,的確spring用的是4. 於是我將spring的版本換成了4,發現還是不好使
3. 還有版本說要在spring的配置檔案中加上註解驅動
<task:annotation-driven />
並且還要加上default-lazy-init="false"屬性,說是不讓spring懶載入,但是發現還是不行
3. 又查到版本說要在Bean上加上@Lazy(false),讓spring對該Bean在啟動的時候就載入,但是發現還是不行
終極解決方案(適合我,不一定適合你, 我用的Spring版本是4)
第一步:在spring的配置檔案中加上
<task:annotation-driven />
第二步:在上述Bean上加上
@EnableScheduling
程式碼如下:
@Service @EnableScheduling public class ParseJsonService { @Scheduled(cron = "0 0 1 * * ?") public void parseMongodbDataToJson() { } }