SpringBoot 定時任務踩坑記錄

2021-09-18 08:03:18 字數 1947 閱讀 4917

springboot已經支援了定時任務schedule模組,一般情況已經完全能夠滿足我們的實際需求。今天就記錄一下我使用 schedule 時候踩的坑吧。

想要使用定時,我們首先要開啟支援,其實就是在啟動類上面加個註解就 ok。

@enablescheduling

public static void main(string args) }

這篇部落格的主題是記錄踩的坑,具體定時任務怎麼使用我就不寫了

今天踩的這個坑和 cron 表示式有關,我們就先來看看 cron 表示式的解釋吧:

cron表示式是乙個字串,字串以5或6個空格隔開,分為6或7個域,每乙個域代表乙個含義

解釋* 第一位,表示秒,取值0-59

* 第二位,表示分,取值0-59

* 第三位,表示小時,取值0-23

* 第四位,日期天/日,取值1-31

* 第五位,日期月份,取值1-12

* 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二週的意思

另外:1表示星期天,2表示星期一。

* 第7為,年份,可以留空,取值1970-2099

(*)星號:可以理解為每的意思,每秒,每分,每天,每月,每年...

(?)問號:問號只能出現在日期和星期這兩個位置,表示這個位置的值不確定,每天3點執行,所以第六位星期的位置,我們是不需要關注的,就是不確定的值。同時:日期和星期是兩個相互排斥的元素,通過問號來表明不指定值。比如,1月10日,比如是星期1,如果在星期的位置是另指定星期二,就前後衝突矛盾了。

(-)減號:表達乙個範圍,如在小時欄位中使用「10-12」,則表示從10到12點,即10,11,12

(,)逗號:表達乙個列表值,如在星期欄位中使用「1,2,4」,則表示星期一,星期二,星期四

(/)斜槓:如:x/y,x是開始值,y是步長,比如在第一位(秒) 0/15就是,從0秒開始,每15秒,最後就是0,15,30,45,60 另:*/y,等同於0/y

注: 這個是官方解釋

0 0 3 * * ? 每天3點執行

0 5 3 * * ? 每天3點5分執行

0 5 3 ? * * 每天3點5分執行,與上面作用相同

0 5/10 3 * * ? 每天3點的 5分,15分,25分,35分,45分,55分這幾個時間點執行

0 10 3 ? * 1 每週星期天,3點10分 執行,注:1表示星期天 

0 10 3 ? * 1#3 每個月的第三個星期,星期天 執行,#號只能出現在星期的位置

在此我要說明,springboot 中的 schedule 支援的 cron 表示式和這個不太相符,官方說的星期表示,1是周天,依次類推,但是我在測試過程中,1實際上代表的就是周一,口說無憑

那我就來貼**和測試結果吧.

@component

@enablescheduling

public class task

測試結果:

2017-05-08 20:46:00.006 info 18838 --- [pool-1-thread-1] com.yiyexy.task.task : 聽說今天是週日
按照上面的解釋來講,第六域是星期,並且值是1那麼代表是週日執行,但是我的執行結果表明是周一執行,我在此表示很無奈。

最後我覺得用單詞來表示週幾,這樣就不會出這種問題了,於是

@component

@enablescheduling

public class task 

}

測試結果:

2017-05-08 20:49:00.005 info 18864 --- [pool-1-thread-1] com.yiyexy.task.task : 聽說今天是週日
好了,這個坑就記錄到這吧,最後奉上一句,時間是檢驗真理的唯一標準。

SpringBoot 定時任務

第一步 在啟動類中加入如下註解 enablescheduling public class public static void main string args 注意 enablescheduling必須加,否則無法開啟定時任務 第二步 建立定時任務 component public class ...

Spring boot定時任務

最近做專案,需要使用定時任務,半個小時去更新redis資料,於是便學習了一下經驗。希望可以幫到你們。定時任務可使用三種 created by fx on 2017 9 4.component allargsconstructor public class featuredatatask 實現乙個任務...

Spring boot 定時任務

1.在啟動類上加 enablescheduling註解 package com.example.demo import org.springframework.scheduling.annotation.enablescheduling enablescheduling public static ...