關(guān)于@Scheduled不執(zhí)行的原因分析
@Scheduled不執(zhí)行的原因
1. 今天用@Schedule做了一個(gè)定時(shí)任務(wù)
希望凌晨1點(diǎn)執(zhí)行,代碼如下
@Service
public class ParseJsonService {
@Scheduled(cron = "0 0 1 * * ?")
public void parseMongodbDataToJson() {
}
}
第二天來公司了,發(fā)現(xiàn)根本沒有執(zhí)行。然后開始查找問題
2. 首先遇到查到的一個(gè)解決方案
說是spring的版本的問題,我看了下我以前用的定時(shí)任務(wù),的確spring用的是4. 于是我將spring的版本換成了4,發(fā)現(xiàn)還是不好使
3. 還有版本說要在spring
的配置文件中加上注解驅(qū)動(dòng)
<task:annotation-driven />
并且還要加上default-lazy-init="false"屬性,說是不讓spring懶加載,但是發(fā)現(xiàn)還是不行
4. 又查到版本說要在Bean上加上@Lazy(false)
讓spring對(duì)該Bean在啟動(dòng)的時(shí)候就加載,但是發(fā)現(xiàn)還是不行
終極解決方案(適合我,不一定適合你, 我用的Spring版本是3,不是4)
第一步:在spring的配置文件中加上
<task:annotation-driven />
第二步:在上述Bean上加上
@EnableScheduling
代碼如下:
@Service
@EnableScheduling
public class ParseJsonService {
@Scheduled(cron = "0 0 1 * * ?")
public void parseMongodbDataToJson() {
}
}
@Scheduled不生效的排查記錄
@Scheduled 不生效的排查記錄
公司之前項(xiàng)目要加個(gè)定時(shí)處理,覺得so easy。
<!-- 開啟定時(shí)任務(wù) -->
<task:annotation-driven />
<!-- 開啟注解 -->
<context:annotation-config />
<!-- 指定相關(guān)的包路徑 -->
<context:component-scan base-package="com.ffrj.schedule"/>
@Component
public class CommonSchedule {
//@Scheduled(cron = "0 0 1 * * ?")
@Scheduled(cron = "*/5 * * * * ?")
public void avg() {
System.out.println("現(xiàn)在開始計(jì)算平均值 當(dāng)前時(shí)間為");
}
}
本以為就搞定了 ,發(fā)現(xiàn)不生效?。?!
開始網(wǎng)上查詢資料。
@EnableScheduling也加了 不生效!@Lazy(false)也加了 不生效??!
開始有點(diǎn)慌了,看了下包路徑 沒問題啊 ,想著用xml 配一遍
<task:annotation-driven />
<bean id="myTaskXml" class="com.ffrj.schedule.CommonSchedule "></bean>
<task:scheduled-tasks>
<task:scheduled ref="myTaskXml" method="show" cron="*/5 * * * * ?" />
</task:scheduled-tasks>
<context:component-scan base-package="com.ffrj.schedule" />
發(fā)現(xiàn)還是不生效?。。。。。?!
這時(shí)候前端訪問了一下我的接口 ,看了看log ,臥槽 system 打印了 ?。。?/p>
冷靜了一下
@Lazy(false) 不生效??沒道理啊 然后開始翻配置文件看是不是有些bean 添加 default-lazy-init=“true” 屬性了 ,也沒有啊。
最后發(fā)現(xiàn) :

不知道哪位奇葩 把這行給注掉了。
果斷取消注釋 解決問題。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java設(shè)計(jì)模式之橋接模式(Bridge)
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之橋接模式Bridge,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
關(guān)于SpringMVC的異常處理機(jī)制詳細(xì)解讀
這篇文章主要介紹了關(guān)于SpringMVC的異常處理機(jī)制詳細(xì)解讀,SpringMVC是目前主流的Web?MVC框架之一,本文將分析SpringMVC的異常處理內(nèi)容,需要的朋友可以參考下2023-05-05
詳解spring中使用Elasticsearch的代碼實(shí)現(xiàn)
本篇文章主要介紹了詳解spring中使用Elasticsearch的代碼實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解一下2017-05-05
阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏
這篇文章主要介紹了阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
Java實(shí)戰(zhàn)之簡(jiǎn)單的文件管理器
這篇文章主要介紹了Java實(shí)戰(zhàn)之簡(jiǎn)單的文件管理器,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04

