springboot定時任務的兩種實現方式

2021-10-25 02:45:25 字數 2238 閱讀 5492

spring自帶定時任務處理器@scheduled註解,所以springboot也可以用@scheduled實現定時任務,第二種方式是使用quartz框架

1.首先在你的springboot專案的pom檔案中引入spring-boot-start-web,

2.然後在啟動類裡新增@enablescheduling,開啟定時任務

@enablescheduling

public

class

}

3.新建乙個定時任務類,加上@component註解

@component

public

class

scheduledtask

4.寫定時任務的方法新增到定時任務類中,在方法上加上@scheduled()註解,在@scheduled的括號裡可以用cron七子表示式來定義定時任務時間執行規則,也可以用fixedrate來定義定時任務時間執行規則,下面為用法

fixedrate 表示任務執行之間的時間間隔,具體是指兩次任務的開始時間間隔,即第二次任務開始時,第一次任務可能還沒結束。

fixeddelay 表示任務執行之間的時間間隔,具體是指本次任務結束到下次任務開始之間的時間間隔。

initialdelay 表示首次任務啟動的延遲時間。

所有時間的單位都是毫秒,例如

@scheduled

(fixedrate=

5000

)public

void

taskfixedrate()

cron表示式(0 0 0 * * ?)

括號中每一位數依次表示 秒|分|時|日|月|周|年

具體取值

秒 0-59 必填 允許萬用字元 - * /

分 0-59 必填 允許萬用字元- * /

時 0-23 必填 允許萬用字元- * /

日 1-31 必填 允許萬用字元- * ? / l w

月 1-12 必填 允許萬用字元- * /

周 1-7 必填 允許萬用字元- * ? / l #(周與日必須有乙個為?,避免衝突)

年 1970-2099 非必填 允許萬用字元- * /

@scheduled

(cron=

"0 1 0 * * ?"

)public

void

taskcron()

萬用字元的含義

? 表示不指定值,即不關心某個欄位的取值時使用。需要注意的是,月份中的日期和星期可能會起衝突,因此在配置時這兩個得有乙個是 ?

* 表示所有值,例如:在秒的字段上設定 *,表示每一秒都會觸發

, 用來分開多個值,例如在周字段上設定 "mon,wed,fri" 表示周一,週三和周五觸發

- 表示區間,例如在秒上設定 "10-12",表示 10,11,12秒都會觸發

/ 用於遞增觸發,如在秒上面設定"5/15" 表示從5秒開始,每增15秒觸發(5,20,35,50)

# 序號(表示每月的第幾個週幾),例如在周字段上設定"6#3"表示在每月的第三個週六,(用 在母親節和父親節再合適不過了)

周字段的設定,若使用英文本母是不區分大小寫的 ,即 mon 與mon相同

l 表示最後的意思。在日字段設定上,表示當月的最後一天(依據當前月份,如果是二月還會自動判斷是否是潤年), 在周字段上表示星期六,相當於"7"或"sat"(注意週日算是第一天)。如果在"l"前加上數字,則表示該資料的最後乙個。例如在周字段上設定"6l"這樣的格式,則表示"本月最後乙個星期五"

w 表示離指定日期的最近工作日(周一至周五),例如在日字段上設定"15w",表示離每月15號最近的那個工作日觸發。如果15號正好是週六,則找最近的周五(14號)觸發, 如果15號是週未,則找最近的下周一(16號)觸發,如果15號正好在工作日(周一至周五),則就在該天觸發。如果指定格式為 "1w",它則表示每月1號往後最近的工作日觸發。如果1號正是週六,則將在3號下周一觸發。(注,"w"前只能設定具體的數字,不允許區間"-")

l 和 w 可以一組合使用。如果在日字段上設定"lw",則表示在本月的最後乙個工作日觸發(一般指發工資 )

待續。。。

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