在SpringBoot2中整合Quartz实践

 更新时间:2026年01月08日 09:09:43   作者:kekezhu0000  
文章介绍了如何在Spring Boot项目中使用Quartz进行定时任务调度,首先,需要在pom.xml中添加依赖,然后配置Quartz属性,创建一个实现Job接口的类,配置Trigger和Scheduler,并在Spring Boot应用中运行,通过访问特定端点,可以查看Quartz Scheduler的详细信息

1. 添加依赖

首先,你需要在你的pom.xml文件中添加Spring Boot和Quartz的依赖。

确保你的Spring Boot版本是2.x。

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- Spring Boot Starter Quartz -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>
</dependencies>

2. 配置Quartz

你可以通过application.propertiesapplication.yml文件来配置Quartz的基本属性,例如:

# application.properties
spring.quartz.job-store-type=memory
spring.quartz.properties.org.quartz.scheduler.instanceName=MyScheduler
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO

或者使用YAML格式:

# application.yml
spring:
  quartz:
    job-store-type: memory
    properties:
      org:
        quartz:
          scheduler:
            instanceName: MyScheduler
            instanceId: AUTO

3. 创建Job类

创建一个实现了org.quartz.Job接口的类。

例如:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;

@Component
public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Executing MyJob");
        // 在这里添加你的业务逻辑代码
    }
}

4. 配置Trigger和Scheduler

你可以使用@Bean注解在配置类中定义一个JobDetailTrigger,并将它们注册到Quartz Scheduler中。

例如:

import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.DateBuilder.futureDate;
import static org.quartz.TimeConstants.*;

@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail myJobDetail() {
        return newJob(MyJob.class).withIdentity("myJob").storeDurably().build();
    }
    
    @Bean
    public Trigger myJobTrigger() {
        return newTrigger().forJob(myJobDetail())
                           .withIdentity("myTrigger")
                           .startAt(futureDate(5, SECOND)) // 5秒后开始执行任务
                           .withSchedule(simpleSchedule().withIntervalInSeconds(10).repeatForever()) // 每10秒重复执行一次任务
                           .build();
    }  
}

5. 运行你的Spring Boot应用

现在,当你运行你的Spring Boot应用时,Quartz将会根据配置自动调度任务。

你可以看到控制台输出定时任务的执行结果。确保你的Spring Boot应用能够正确启动并且没有异常。

如果一切设置正确,你应该能看到定时任务按照预定计划执行。

你可以通过访问/actuator/quartz端点(如果你启用了Spring Boot Actuator的话)来查看更多关于Quartz Scheduler的详细信息。

例如:

http://localhost:8080/actuator/quartz/triggers 或 http://localhost:8080/actuator/quartz/jobs。

确保你已经包含了Spring Boot Actuator的依赖,并在application.propertiesapplication.yml中启用了相应的端点:

management.endpoints.web.exposure.include=*

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java利用反射实现动态代理示例

    java利用反射实现动态代理示例

    这篇文章主要介绍了java利用反射实现动态代理示例,需要的朋友可以参考下
    2014-04-04
  • Java 获取原始请求域名实现示例

    Java 获取原始请求域名实现示例

    这篇文章主要为大家介绍了Java 获取原始请求域名实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 详解Spring AOP的原理与实现方式

    详解Spring AOP的原理与实现方式

    Spring框架是一个功能强大且灵活的企业级应用程序开发框架,其中最重要的特性之一就是面向切面编程(AOP),我们今天这篇文章将从源码和案例的角度详细介绍Spring AOP的思想、原理和实现方式
    2023-07-07
  • maven添加jar包到本地仓库的实现

    maven添加jar包到本地仓库的实现

    本文主要介绍了maven添加jar包到本地仓库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 关于HashMap 并发时会引起死循环的问题解析

    关于HashMap 并发时会引起死循环的问题解析

    JDK1.8之前采用头插,即在链表结构上每次都把数据放在链表头部。JDK1.8采用尾插方法,很多朋友在学习Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时不知道究其原因,今天小编通过本文给大家介绍下HashMap 并发死循环问题,一起看看吧
    2021-05-05
  • Java程序员必备的11大IntelliJ插件(附地址)

    Java程序员必备的11大IntelliJ插件(附地址)

    这篇文章主要介绍了Java程序员必备的11大IntelliJ插件(附地址),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Springmvc处理ajax请求并返回json数据

    Springmvc处理ajax请求并返回json数据

    这篇文章主要介绍了Springmvc处理ajax请求并返回json数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java Stream API中实现数据的并行处理指南

    Java Stream API中实现数据的并行处理指南

    在 Java Stream API 中,实现数据的并行处理非常简单,核心是通过 ​​parallelStream() ​​​ 方法获取并行流,而非默认的串行流(​​stream()​​),本文给大家介绍了Java Stream API中实现数据的并行处理的操作方法,需要的朋友可以参考下
    2025-10-10
  • java服务器的简单实现过程记录

    java服务器的简单实现过程记录

    在线浏览网页离不开服务器,用户发出请求request,服务器做出响应response,提供给用户需要的页面,这篇文章主要给大家介绍了关于java服务器简单实现的相关资料,需要的朋友可以参考下
    2021-11-11
  • 使用Feign设置Token鉴权调用接口

    使用Feign设置Token鉴权调用接口

    这篇文章主要介绍了使用Feign设置Token鉴权调用接口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论