最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 集成 Quartz 使用Cron 表達(dá)式實(shí)現(xiàn)定時(shí)任務(wù)

 更新時(shí)間:2025年03月22日 09:38:55   作者:my1121716951  
本文介紹了如何在SpringBoot項(xiàng)目中集成Quartz并使用Cron表達(dá)式進(jìn)行任務(wù)調(diào)度,通過添加Quartz依賴、創(chuàng)建Quartz任務(wù)、配置任務(wù)調(diào)度以及啟動(dòng)項(xiàng)目,可以實(shí)現(xiàn)定時(shí)任務(wù)的執(zhí)行,Cron表達(dá)式提供了靈活的任務(wù)調(diào)度方式,適用于各種復(fù)雜的定時(shí)任務(wù)需求,感興趣的朋友一起看看吧

前言

在 Spring Boot 項(xiàng)目中,我們經(jīng)常需要定時(shí)執(zhí)行某些任務(wù),例如定期清理數(shù)據(jù)庫(kù)、同步數(shù)據(jù)、發(fā)送通知等。Quartz 是一個(gè)強(qiáng)大的任務(wù)調(diào)度框架,可以通過 Cron 表達(dá)式 實(shí)現(xiàn)靈活的任務(wù)調(diào)度。本篇文章將介紹如何在 Spring Boot 中集成 Quartz 并使用 Cron 表達(dá)式 進(jìn)行任務(wù)調(diào)度。

1. 添加 Quartz 依賴

Spring Boot 項(xiàng)目中,首先需要引入 Quartz 相關(guān)依賴。

如果使用 Maven,在 pom.xml 中添加以下依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

如果使用 Gradle,則添加:

implementation 'org.springframework.boot:spring-boot-starter-quartz'

2. 創(chuàng)建 Quartz 任務(wù)

在 Quartz 中,每個(gè)定時(shí)任務(wù)需要繼承 org.quartz.Job 接口,并實(shí)現(xiàn) execute 方法。

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalDateTime;
public class MyQuartzJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Quartz 定時(shí)任務(wù)執(zhí)行中:" + LocalDateTime.now());
    }
}

3. 配置 Quartz 任務(wù)調(diào)度

Spring Boot 允許通過 SchedulerFactoryBean 配置 Quartz 任務(wù),并使用 @Bean 方式定義任務(wù)的調(diào)度規(guī)則。

import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class QuartzConfig {
    // 定義 JobDetail
    @Bean
    public JobDetail myJobDetail() {
        return JobBuilder.newJob(MyQuartzJob.class)
                .withIdentity("myQuartzJob")  // 任務(wù)名稱
                .storeDurably()
                .build();
    }
    // 定義觸發(fā)器,使用 Cron 表達(dá)式
    @Bean
    public Trigger myJobTrigger() {
        return TriggerBuilder.newTrigger()
                .forJob(myJobDetail())
                .withIdentity("myQuartzTrigger") // 觸發(fā)器名稱
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0/5 0-7 ? * * *")) // Cron 表達(dá)式
                .build();
    }
}

在上述配置中,我們的定時(shí)任務(wù):

  • 每 5 分鐘執(zhí)行一次
  • 每天從 00:00 到 07:59 之間執(zhí)行
  • 使用 Cron 表達(dá)式 0 0/5 0-7 ? * * *

如果需要 08:00 也執(zhí)行一次,可以修改 Cron 表達(dá)式為:

0 0/5 0-8 ? * * *

4. 啟動(dòng) Spring Boot 觀察定時(shí)任務(wù)執(zhí)行

啟動(dòng) Spring Boot 項(xiàng)目,觀察控制臺(tái)輸出:

Quartz 定時(shí)任務(wù)執(zhí)行中:2024-03-19T00:00:00
Quartz 定時(shí)任務(wù)執(zhí)行中:2024-03-19T00:05:00
Quartz 定時(shí)任務(wù)執(zhí)行中:2024-03-19T00:10:00
...
Quartz 定時(shí)任務(wù)執(zhí)行中:2024-03-19T07:55:00

如果 Cron 表達(dá)式修改為 0 0/5 0-8 ? * * *,則會(huì)多執(zhí)行一次:

Quartz 定時(shí)任務(wù)執(zhí)行中:2024-03-19T08:00:00

5. Quartz Cron 表達(dá)式詳解

Quartz 的 Cron 表達(dá)式有 7 個(gè)字段,每個(gè)字段的含義如下:

字段允許值說明
秒(Seconds)0-59任務(wù)觸發(fā)的秒數(shù)
分(Minutes)0-59任務(wù)觸發(fā)的分鐘數(shù)
小時(shí)(Hours)0-23任務(wù)觸發(fā)的小時(shí)數(shù)
日期(Day of month)1-31任務(wù)觸發(fā)的日期(不能與 Day of week 同時(shí)指定)
月份(Month)1-12 或 JAN-DEC任務(wù)觸發(fā)的月份
星期(Day of week)1-7 或 SUN-SAT任務(wù)觸發(fā)的星期幾
年(可選)空 或 1970-2099任務(wù)觸發(fā)的年份

示例 Cron 表達(dá)式

  • 0 0 12 * * ? → 每天中午 12:00 執(zhí)行
  • 0 0/30 * * * ? → 每 30 分鐘執(zhí)行一次
  • 0 15 10 * * ? → 每天 10:15 執(zhí)行
  • 0 0 8-20/2 * * ? → 每天 08:00 - 20:00 之間,每 2 小時(shí)執(zhí)行一次

6. 結(jié)論

本篇文章介紹了如何在 Spring Boot 中集成 Quartz 進(jìn)行定時(shí)任務(wù)調(diào)度,并通過 Cron 表達(dá)式 控制任務(wù)執(zhí)行時(shí)間。Quartz 提供了更強(qiáng)大的任務(wù)調(diào)度能力,比 @Scheduled 注解更靈活,適用于復(fù)雜的定時(shí)任務(wù)需求。

你是否在項(xiàng)目中使用 Quartz?歡迎在評(píng)論區(qū)分享你的經(jīng)驗(yàn)! ??

到此這篇關(guān)于Spring Boot 集成 Quartz 實(shí)現(xiàn)定時(shí)任務(wù)(Cron 表達(dá)式示例)的文章就介紹到這了,更多相關(guān)Spring Boot Quartz 定時(shí)任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot3 spring.factories自動(dòng)配置功能不生效的解決

    SpringBoot3 spring.factories自動(dòng)配置功能不生效的解決

    SpringBoot3棄用spring.factories,改用AutoConfiguration.imports文件管理自動(dòng)配置類,需刪除舊文件,新增專用文件并使用@AutoConfiguration替代@Configuration+@ConditionalOn組合注解,提升配置清晰度與未來擴(kuò)展性
    2025-09-09
  • Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法

    Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法

    這篇文章主要介紹了Spring?MVC基于注解的使用JSON數(shù)據(jù)處理,json是一種輕量級(jí)的數(shù)據(jù)交換格式,是一種理想的數(shù)據(jù)交互語言,它易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Java實(shí)現(xiàn)鏈棧的示例代碼

    Java實(shí)現(xiàn)鏈棧的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)來實(shí)現(xiàn)棧,也就是鏈棧的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11
  • Jmeter參數(shù)化實(shí)現(xiàn)方法及應(yīng)用實(shí)例

    Jmeter參數(shù)化實(shí)現(xiàn)方法及應(yīng)用實(shí)例

    這篇文章主要介紹了Jmeter參數(shù)化實(shí)現(xiàn)方法及應(yīng)用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring aop 五種通知類型小結(jié)

    Spring aop 五種通知類型小結(jié)

    本文主要介紹了Spring aop 五種通知類型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • 更改Maven軟件源為阿里云源的方法詳解

    更改Maven軟件源為阿里云源的方法詳解

    這篇文章主要介紹了更改Maven軟件源為阿里云源的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 深入理解Spring MVC概要與環(huán)境配置

    深入理解Spring MVC概要與環(huán)境配置

    本篇文章主要介紹了深入理解Spring MVC概要與環(huán)境配置 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Java中提供synchronized后為什么還要提供Lock

    Java中提供synchronized后為什么還要提供Lock

    這篇文章主要介紹了Java中提供synchronized后為什么還要提供Lock,在Java中提供了synchronized關(guān)鍵字來保證只有一個(gè)線程能夠訪問同步代碼塊,下文更多相關(guān)資料需要的小伙伴可以參考一下
    2022-03-03
  • MybatisPlus多表連接查詢的具體實(shí)現(xiàn)

    MybatisPlus多表連接查詢的具體實(shí)現(xiàn)

    MyBatis Plus是一款針對(duì)MyBatis框架的增強(qiáng)工具, 它提供了很多方便的方法來實(shí)現(xiàn)多表聯(lián)查,本文主要介紹了MybatisPlus多表連接查詢的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • mybatisplus中返回Vo的案例講解

    mybatisplus中返回Vo的案例講解

    這篇文章主要介紹了mybatisplus中返回Vo的案例,mybatisplus內(nèi)置的幾個(gè)方法使用泛型限制了方法的返回類型,所以實(shí)現(xiàn)返回Vo還是得自定義方法,?這個(gè)方法名盡量不要和原有的名字類似,本文通過實(shí)例代碼給大家詳解講解,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

霍林郭勒市| 邵阳县| 盐亭县| 芦溪县| 息烽县| 长子县| 湖州市| 海南省| 民乐县| 安康市| 澄城县| 开原市| 汾阳市| 满洲里市| 磐石市| 新民市| 卢龙县| 台山市| 南充市| 平塘县| 崇州市| 东安县| 扶余县| 襄汾县| 维西| 桐梓县| 海丰县| 安庆市| 滦平县| 玛曲县| 万载县| 涞水县| 南澳县| 苏尼特右旗| 怀柔区| 东莞市| 汤原县| 永善县| 盘锦市| 谢通门县| 京山县|