溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

@Scheduled不執(zhí)行怎么辦

發(fā)布時間:2021-12-27 16:55:15 來源:億速云 閱讀:429 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“@Scheduled不執(zhí)行怎么辦”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“@Scheduled不執(zhí)行怎么辦”吧!

@Scheduled不執(zhí)行的原因

1. 今天用@Schedule做了一個定時任務

希望凌晨1點執(zhí)行,代碼如下

@Service
public class ParseJsonService { 
    @Scheduled(cron = "0 0 1 * * ?")
    public void parseMongodbDataToJson() {
    }
}

第二天來公司了,發(fā)現(xiàn)根本沒有執(zhí)行。然后開始查找問題

2. 首先遇到查到的一個解決方案

說是spring的版本的問題,我看了下我以前用的定時任務,的確spring用的是4. 于是我將spring的版本換成了4,發(fā)現(xiàn)還是不好使

3. 還有版本說要在spring

的配置文件中加上注解驅(qū)動

<task:annotation-driven />

并且還要加上default-lazy-init="false"屬性,說是不讓spring懶加載,但是發(fā)現(xiàn)還是不行

4. 又查到版本說要在Bean上加上@Lazy(false)

讓spring對該Bean在啟動的時候就加載,但是發(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 不生效的排查記錄

公司之前項目要加個定時處理,覺得so easy。

 <!-- 開啟定時任務 -->
    <task:annotation-driven />
    <!-- 開啟注解 -->
    <context:annotation-config />
    <!-- 指定相關的包路徑 -->
    <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)在開始計算平均值 當前時間為");
    }
}

本以為就搞定了 ,發(fā)現(xiàn)不生效?。?!

開始網(wǎng)上查詢資料。

  • @EnableScheduling 也加了 不生效!

  • @Lazy(false) 也加了 不生效?。?/p>

開始有點慌了,看了下包路徑 沒問題啊 ,想著用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)還是不生效?。。。。。?!

這時候前端訪問了一下我的接口 ,看了看log ,臥槽 system 打印了 ?。?!

冷靜了一下

@Lazy(false) 不生效??沒道理啊 然后開始翻配置文件看是不是有些bean 添加 default-lazy-init=“true” 屬性了 ,也沒有啊。

最后發(fā)現(xiàn) :

@Scheduled不執(zhí)行怎么辦

不知道哪位奇葩 把這行給注掉了。

果斷取消注釋 解決問題。

感謝各位的閱讀,以上就是“@Scheduled不執(zhí)行怎么辦”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對@Scheduled不執(zhí)行怎么辦這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI