`
Anybing
  • 浏览: 127210 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Quartz定时任务调用以及与Spring的整合

阅读更多
    Quartz就像一个定时器,经常用于处理一些需要定时重复执行的业务。它有3个主要概念:调度器,触发器和任务。先下载quartz.jar文件或使用Maven:
<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>1.8.0</version>
</dependency>
    新建一个Java项目,将下载好的quartz.jar导入。首先我们建立一个简单的任务,任务的接口是Job类。

Java Code:
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class SimpleQuartzJob implements Job {

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
  System.out.println("In SimpleQuartzJob - executing its JOB at "
                + new Date() + " by " + context.getTrigger().getName());
}

}
1.去实现Quartz的Job接口,在execute方法中写你要执行的业务逻辑。
2.创建触发器和调度器来执行定时任务。

Java Code:
import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

public class Main {

public static void main(String[] args) throws SchedulerException {
  //get a scheduler
  SchedulerFactory schedulerFactory = new StdSchedulerFactory();
  Scheduler scheduler = schedulerFactory.getScheduler();
  //new a job
  JobDetail jobDetail = new JobDetail("jobDetail-s1","jobDetailGroup-s1", SimpleQuartzJob.class);
  //new a trigger
  SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger", "triggerGroup-s1");
  //set the start time
  long ctime = System.currentTimeMillis();
  simpleTrigger.setStartTime(new Date(ctime));
  //set the interval
  simpleTrigger.setRepeatInterval(10000);
  //set the count
  simpleTrigger.setRepeatCount(10);
  //set the priority, default is 5
  simpleTrigger.setPriority(5);
  scheduler.scheduleJob(jobDetail, simpleTrigger);
 
  scheduler.start();
}

}
    在该类中,先初始化一个SchedulerFactory类的对象,再由它得到一个Scheduler对象。接着再分别创建一个Job和Trigger。注意在创建Job的过程中需要用到之前定义的SimpleQuartzJob,已告知JobDetail具体需要执行的逻辑代码是SimpleQuartzJob中的execute方法。然后可以定义些执行参数,如:startTime开始时间,repeatInterval重复执行间隔,repeatCount重复执行次数及优先级Priority等。最后将job和trigger通过scheduleJob交给scheduler来执行即可。

如何在Spring环境中集成Quartz?
    首先确保你的Spring环境中已经有Spring-context-support.jar这个jar文件。这个jar中包含了Spring对于quartz的支持。
    接着就能在Spring的配置文件中建立如下配置:
    <bean id="configRefreshJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
       <property name="targetObject">
           <ref bean="configUtil" />
       </property>
       <property name="targetMethod">
           <value>refreshConfig</value>
       </property>
    </bean>
   
    <bean id="configRefreshJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
       <property name="jobDetail">
           <ref bean="configRefreshJobDetail" />
       </property>
       <property name="cronExpression">
           <value>5 * * * * ?</value>
       </property>
    </bean>

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <property name="triggers">
           <list>
              <ref local="configRefreshJobTrigger" />
           </list>
       </property>
    </bean>
    其中MethodInvokingJobDetailFactory这个对象其实就类似于Job。targetObject指向的是BeanFactory中的某一对象比如说是configUtil,而targetMethod指明了要重复执行的方法,是configUtil对象中的refreshConfig方法。这样一个Job就定义好了,这里能访问Spring工厂中已有的bean最为Job的对象,而且也不用我们手动去创建Job,已传统的Spring配置文件的方式来定义个Job的bean。CronTriggerBean其实就等同于之前的Trigger,这里Spring为我们做了封装,通过jobDetail可以指定任务对象,就是之前的configRefreshJobDetail, cronExpression表达式可以指定循环时间,这比之前指定repeatInterval的方式要灵活得多了。最后将configRefreshJobTrigger对象交给SchedulerFactoryBean对象即可。我们不需要手动去调用,只要存在SchedulerFactoryBean对象,spring容器会自动为我们启动其内部的Trigger。
分享到:
评论

相关推荐

    spring整合quartz定时任务调度

    以上就是Spring整合Quartz实现定时任务调度的基本流程。在实际开发中,你可能需要根据项目需求对触发规则、任务逻辑、并发控制等方面进行更复杂的配置和设计。同时,Quartz还支持集群部署,可以在多台服务器上实现...

    quartz整合springbatch动态集群定时实现mysql参考

    通过这个项目,开发者可以学习到如何在分布式环境中使用Quartz进行定时任务调度,以及如何利用Spring Batch进行批量数据处理。同时,了解如何将这些组件与MySQL数据库相结合,实现高可用性和可扩展性。对于希望构建...

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    Spring整合Quartz 2.2.3是Java开发者在实现定时任务时常用的一种技术组合。Quartz是一款开源的作业调度框架,它允许程序在特定时间执行预定的任务,而Spring则是一个强大的企业级应用开发框架,提供了丰富的依赖注入...

    spring整合quartz定时任务

    Spring整合Quartz定时任务是企业级应用中常见的一种任务调度技术,它允许开发者在应用程序中设置定时执行的任务,比如数据同步、报表生成等。Quartz是一个功能强大的开源作业调度框架,而Spring则是一个广泛使用的...

    Springboot整合Quartz实现定时任务数据库动态配置

    Spring Boot作为一个轻量级的Java框架,提供了与各种定时任务库集成的能力,其中Quartz是一个广泛应用的开源作业调度框架。本篇文章将详细探讨如何在Spring Boot项目中整合Quartz,并通过MySQL数据库实现定时任务的...

    spring整合quartz两种方式以及spring自带定时任务使用

    在本文中,我们将探讨Spring与Quartz的两种整合方式以及Spring自身提供的定时任务功能。 ### Spring整合Quartz的方式 #### 1. 配置驱动的方式 这种方式主要是通过XML配置来创建和管理Quartz的Scheduler实例。首先...

    Quartz与Spring整合练习源代码

    将Quartz与Spring整合,可以方便地管理和控制定时任务,同时利用Spring的依赖注入和管理功能,提高代码的可维护性和可测试性。 Quartz的核心概念包括Job、Trigger和Scheduler。Job是实际需要执行的任务,Trigger是...

    定时任务完整案例 Java quartz

    中的"完整的定时任务案例,导入Eclipse或者MyEclipse即可使用"意味着这个压缩包包含了一个可以运行的示例项目,开发者可以通过导入到Eclipse或MyEclipse这样的IDE中快速理解和学习如何设置和运行Quartz定时任务。...

    springboot+quartz 动态化配置定时任务

    通过整合SpringBoot和Quartz,我们可以利用Spring的自动配置能力,方便地在Spring应用中集成定时任务功能。 二、Quartz动态配置 1. 引入依赖:首先,在`pom.xml`文件中引入SpringBoot的SpringBoot-starter-quartz...

    spring整合quartz定时发送邮件

    Spring整合Quartz定时发送邮件涉及到的关键技术点有: 1. 使用Apache Commons Email库进行邮件发送。 2. 创建Quartz Job,继承Spring提供的`QuartzJobBean`,并在`executeInternal()`方法中执行实际任务。 3. 在...

    spring_quartz_定时任务

    三、Spring整合Quartz 1. 添加依赖:在项目中引入Quartz的jar包,如`quartz-all-1.6.0.jar`,这是Quartz的核心库,包含了所有必需的组件。 2. 配置Spring:在Spring的配置文件中,我们需要配置一个`...

    java spring quartz 动态定时任务

    Spring与Quartz的结合使用,使得我们可以方便地在Spring框架下管理定时任务,同时还能实现任务的动态添加、修改和删除。 Quartz是一个开源的作业调度框架,支持丰富的调度策略,包括简单的定时执行、按日程表执行...

    spring+quartz实现动态设置定时任务

    5. **监控与管理**:为了更好地管理和监控定时任务,可以利用Quartz提供的JMX支持,或者使用第三方的监控工具,如Spring Boot Actuator,实时查看任务状态和执行情况。 6. **心得分享**:在实践中,要注意任务的...

    spring + Quartz 定时任务

    Spring提供了`MethodInvokingJobDetailFactoryBean`,可以直接调用某个bean的方法作为定时任务。这样可以将业务逻辑封装在单独的bean中,更符合Spring的设计原则。 **文件依赖** 在提供的文件列表中,`commons-...

    spring+quartz 动态任务方案

    整合 Spring 和 Quartz 可以让开发者更加灵活地管理和控制定时任务。以下是整合的基本步骤: 1. **配置Spring容器**:首先需要将 Quartz 的相关组件注册到 Spring 容器中。这一步主要是为了让 Spring 能够管理 ...

    Springboot2.0.1整合Quartz动态定时任务

    本文将深入探讨如何在SpringBoot 2.0.1版本中整合Quartz,实现动态定时任务,并结合MyBatis-Plus进行数据操作。 首先,我们要在SpringBoot项目中引入Quartz和MyBatis-Plus的依赖。在`pom.xml`文件中,添加如下依赖...

    spring+quartz定时集群支持

    总结起来,"Spring+Quartz定时集群支持"涉及到的知识点主要包括:Spring与Quartz的集成、Quartz的集群配置、`MethodInvokingJobDetailFactoryBean`的使用、数据库表的设计以及通过IHS等手段实现的任务调度。...

    Quartz+Spring定时触发器例子

    Quartz和Spring结合使用可以构建强大的定时任务管理系统。Quartz是一个开源的作业调度框架,它允许应用程序定义和调度任务在特定时间执行。而Spring框架则提供了丰富的依赖注入和管理功能,使得集成Quartz变得更加...

    spring定时任务之Quartz

    需要注意的是,`ssh2Test`这个文件名可能与本主题无关,因为它是SSH2测试相关的,而SSH2通常指的是Secure Shell 2协议,用于远程访问和管理服务器,与Spring定时任务或Quartz不直接相关。如果需要了解更多关于SSH2的...

Global site tag (gtag.js) - Google Analytics