springboot定時任務

2021-08-21 13:38:47 字數 2607 閱讀 2808

在springboot的主啟動程式新增註解@enablescheduling

@enablescheduling

新建乙個類,該類使用者處理某一業務型別的定時任務,比如商品系統中,商品分類的各種統計資料業務類catalogcountscheduler類。注意,該類是需要交給spring容器管理的,所以需要在該類類名上貼上@component註解

然後就可以建立定時任務了,每個方法代表乙個任務,在方法上貼上註解@scheduled,比如:

/**

* 每天凌晨2點鐘執行該定時任務

*/ @scheduled(cron = "0 0 2 * * ?")

public void catalogcontscheduled(){}

字段

允許值允許特殊字元

秒0-59

- * , /

分0-59

- * , /

小時0-23

- * , /

日1-31

- * , ? / l w

月1-12或jan-dec

- * , /

周1-7或sun-sat

- * , ? / l #

年留空或1970-2099

- * , /

cron是cornexpression表示式的意思:

cornexpression表示式詳解:

完整字段:[秒] [分] [小時] [日] [月] [周] [年]

字段允許值

允許特殊字元

秒0-59

- * , /

分0-59

- * , /

小時0-23

- * , /

日1-31

- * , ? / l w

月1-12或jan-dec

- * , /

周1-7或sun-sat

- * , ? / l #

年留空或1970-2099

- * , /

注:

*表示所有值,在分鐘裡表示每一分鐘觸發。在小時,日期,月份等裡面表示每一小時,每一日,每一月。

?表示不指定值。表示不關心當前位置設定的值。 比如不關心是週幾,則周的位置填寫?。  主要是由於日期跟週是有重複的所以兩者必須有一者設定為?

-表示區間。小時設定為10-12表示10,11,12點均會觸發。

,表示多個值。 小時設定成10,12表示10點和12點會觸發。

/ 表示遞增觸發。 5/15表示從第5秒開始,每隔15秒觸發。或者*/20,表示每隔20秒執行一次。

l 表示最後的意思。 日上表示最後一天。星期上表示星期六或7。 l前加資料,表示該資料的最後乙個。星期上設定6l表示最後乙個星期五。 6表示星期五

w表示離指定日期最近的工作日觸發。15w離該月15號最近的工作日觸發。

.#表示每月的第幾個週幾。 6#3表示該月的第三個周五。

示例:

"0 0 12 * * ?" 每天中午12點觸發

"0 15 10 ? * *" 每天上午10:15觸發

"0 15 10 * * ?" 每天上午10:15觸發

"0 15 10 * * ? *" 每天上午10:15觸發

"0 15 10 * * ? 2005" 2023年的每天上午10:15觸發

"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鐘觸發

"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發

"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發

"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發

"0 10,44 14 ? 3 wed" 每年三月的星期三的下午2:10和2:44觸發

"0 15 10 ? * mon-fri" 周一至周五的上午10:15觸發

"0 15 10 15 * ?" 每月15日上午10:15觸發

"0 15 10 l * ?" 每月最後一日的上午10:15觸發

"0 15 10 ? * 6l" 每月的最後乙個星期五上午10:15觸發

"0 15 10 ? * 6l 2002-2005" 2023年至2023年的每月的最後乙個星期五上午10:15觸發

"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發

"0 0 */2 * * ?" 每兩個小時

//上一次開始執行時間點向後每隔20秒執行一次。

@scheduled(fixedrate = 20000):

//上一次執行完畢時間點向後每隔20秒執行一次。

@scheduled(fixeddelay = 20000):

可以和fixedrate、fixeddelay組合使用。例如:

//第一次延遲6秒後執行,之後按fixedrate的規則每20秒執行一次。

@scheduled(initialdelay=6000, fixedrate=20000)

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 ...