【Spring Boot實戰與進階】定時任務註解@Scheduled的使用

Spring Boot是很優秀的框架,它的出現簡化了新Spring應用的初始搭建以及開發過程,大大減少了代碼量,目前已被大多數企業認可和使用。這個專欄將對Spring Boot框架從淺入深,從實戰到進階,不但我們要懂得如何去使用,還要去剖析框架源碼,學習其優秀的設計思想。

彙總目錄鏈接:【Spring Boot實戰與進階】學習目錄

1、cron 表達式

格式: [秒] [分] [小時] [日] [月] [周] [年]

key 釋義
(0~59)
分鐘 (0~59)
小時 (0~23)
(0~31)
(0~11)
星期 (1~7,SUN,MON,TUE,WED,THU,FRI,SAT)
(1970-2099)

2、特殊字符的含義

key 釋義
* 代表所有可能得值,在(月)中表示每個月,在(天)中表示一星期的每一天
/ 代表指定數值的增量,0/15在(分鐘)中表示從第0分鐘開始,每15分鐘
? 僅被用於天(月)和天(星期),表示不指定值,當這兩個其中之一被指定了值之後,爲了避免衝突,需要將另一個表達式的值設定爲"?"
L 僅被用於天(月)和天(星期),是單詞"Last"的縮寫, 在天(月)中表示一個月的最後一天,在天(星期)中表示一個星期的最後一天,也就是週六
- 表示一個範圍
, 表示一個列表值

3、舉例

key 釋義
0 0 6 * * ? 每天6點觸發
0 30 6 * * ? 每天6點30分觸發
0 30 6 * * ? 2019 2019年每天6點30觸發
0 10/15 6 * * ? 每天6點的 10分,25分,40分,55分這幾個時間點執行
0 * 9 * * ? 每天9點到9點59分每分觸發
0 0/5 9 * * ? 每天9點到9點59分(整點開始,每隔5分觸發)
0 0/5 9,10 * * ? 每天9點到10點59分(整點開始,每隔5分觸發)
0 0-5 9 * * ? 每天9點到9點05分每分觸發
0 15 8 ? 11 MON-FRI 從週一到週五每天8點15分觸發
0 0 18 15 * ? 每月15號18點觸發
0 0 18 L * ? 每月最後一天的18點觸發
0 30 6 ? * 1 每週星期天,6點30分觸發
0 30 6 ? * 6L 每月最後一週的星期五的6點30分觸發
0 10 3 ? * 1#3 每個月的第三個星期天觸發,#號只能出現在星期的位置
0 14 13 20 5 ? 每年的5月20號 13點14分觸發

4、Spring Boot項目中如何使用

  SpringBoot的啓動類上添加@EnableScheduling,此註解的作用是發現註解@Scheduled的任務並後臺執行。(或者添加在定時任務類上也可以)

@SpringBootApplication
@EnableScheduling
public class BootdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootdemoApplication.class, args);
    }

}

5、ScheduleTask 定時任務測試類

@Component
public class ScheduleTask {

    // 每隔10秒執行一次
    @Scheduled(cron = "0/10 * * * * ?")
    public void print() {
        System.out.println("每隔10秒執行一次:" + new Date());
    }

}

6、控制檯輸出

在這裏插入圖片描述

發佈了194 篇原創文章 · 獲贊 1154 · 訪問量 131萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章