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

SpringBoot集成Quartz實現(xiàn)定時任務(wù)方式(Cron表達式示例)

 更新時間:2026年02月04日 09:08:38   作者:易xingxing  
本文介紹了如何在SpringBoot項目中集成Quartz并使用Cron表達式進行任務(wù)調(diào)度,通過添加依賴、創(chuàng)建任務(wù)、配置調(diào)度、啟動項目和Cron表達式詳解,展示了Quartz的強大功能和靈活性

前言

在 Spring Boot 項目中,我們經(jīng)常需要定時執(zhí)行某些任務(wù),例如定期清理數(shù)據(jù)庫、同步數(shù)據(jù)、發(fā)送通知等。

Quartz 是一個強大的任務(wù)調(diào)度框架,可以通過 Cron 表達式 實現(xiàn)靈活的任務(wù)調(diào)度。本篇文章將介紹如何在 Spring Boot 中集成 Quartz 并使用 Cron 表達式 進行任務(wù)調(diào)度。

1. 添加 Quartz 依賴

Spring Boot 項目中,首先需要引入 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 中,每個定時任務(wù)需要繼承 org.quartz.Job 接口,并實現(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 定時任務(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 表達式
    @Bean
    public Trigger myJobTrigger() {
        return TriggerBuilder.newTrigger()
                .forJob(myJobDetail())
                .withIdentity("myQuartzTrigger") // 觸發(fā)器名稱
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0/5 0-7 ? * * *")) // Cron 表達式
                .build();
    }
}

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

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

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

0 0/5 0-8 ? * * *

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

啟動 Spring Boot 項目,觀察控制臺輸出:

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

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

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

5. Quartz Cron 表達式詳解

Quartz 的 Cron 表達式有 7 個字段,每個字段的含義如下:

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

示例 Cron 表達式

  • 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 小時執(zhí)行一次

6. 結(jié)論

本篇文章介紹了如何在 Spring Boot 中集成 Quartz 進行定時任務(wù)調(diào)度,并通過 Cron 表達式 控制任務(wù)執(zhí)行時間。

Quartz 提供了更強大的任務(wù)調(diào)度能力,比 @Scheduled 注解更靈活,適用于復(fù)雜的定時任務(wù)需求。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 字節(jié)二面SpringBoot可以同時處理多少請求

    字節(jié)二面SpringBoot可以同時處理多少請求

    這篇文章主要為大家介紹了字節(jié)二面之SpringBoot可以同時處理多少請求面試分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 基于java類路徑classpath和包的實例講解

    基于java類路徑classpath和包的實例講解

    下面小編就為大家分享一篇基于java類路徑classpath和包的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • java String的intern方法

    java String的intern方法

    本文主要介紹java 中String 的intern方法,這里主要通過實例來說明不同版本的JDK,intern方法的對比,有需要的小伙伴可以參考下
    2016-07-07
  • springboot接收日期類型參數(shù)的操作方法

    springboot接收日期類型參數(shù)的操作方法

    如果使用Get請求,直接使用對象接收,則可以使用@DateTimeFormat注解進行格式化,本文重點給大家介紹springboot接收日期類型參數(shù)的方法,感興趣的朋友一起看看吧
    2024-02-02
  • java內(nèi)部類的最詳細詳解

    java內(nèi)部類的最詳細詳解

    內(nèi)部類是指在一個外部類的內(nèi)部再定義一個類,下面這篇文章主要給大家介紹了關(guān)于java內(nèi)部類的最詳細詳解,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • windows10 JDK安裝及配置環(huán)境變量與Eclipse安裝教程

    windows10 JDK安裝及配置環(huán)境變量與Eclipse安裝教程

    這篇文章主要介紹了windows10 JDK安裝及配置環(huán)境變量與Eclipse安裝,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • spring使用OXM進行對象XML映射解析

    spring使用OXM進行對象XML映射解析

    這篇文章主要介紹了spring使用OXM進行對象XML映射解析,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • java使用JMF實現(xiàn)音樂播放功能

    java使用JMF實現(xiàn)音樂播放功能

    這篇文章主要為大家詳細介紹了java使用JMF實現(xiàn)音樂播放的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Spring?Cache+Redis緩存數(shù)據(jù)的實現(xiàn)示例

    Spring?Cache+Redis緩存數(shù)據(jù)的實現(xiàn)示例

    本文主要介紹了Spring?Cache+Redis緩存數(shù)據(jù),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 深度解析Java常量池中的Integer緩沖池和String常量池

    深度解析Java常量池中的Integer緩沖池和String常量池

    為了減少對象重復(fù)創(chuàng)建、提升運行時效率,Java 內(nèi)部提供了兩種重要的優(yōu)化機制Integer 緩沖池(IntegerCache)和 String 常量池(String Pool),本文將深入剖析兩大常量池的底層實現(xiàn)、工作流程、適用范圍,并通過流程圖和代碼示例幫助你徹底掌握
    2026-05-05

最新評論

南郑县| 社会| 榆树市| 娱乐| 香河县| 洮南市| 隆昌县| 奇台县| 洱源县| 万宁市| 玛多县| 清丰县| 龙游县| 报价| 景泰县| 塔城市| 塔城市| 南康市| 阜宁县| 曲靖市| 古浪县| 安顺市| 通辽市| 江达县| 齐齐哈尔市| 青海省| 双峰县| 弥勒县| 绥化市| 微山县| 新丰县| 宣化县| 辰溪县| 井研县| 乃东县| 沙田区| 日土县| 弥渡县| 视频| 晋中市| 洪泽县|