天天看点

使用Spring整合Quartz轻松完成定时任务

 一、背景

  上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等。

二、开发环境及必须jar包依赖

  1.开发环境

    Spring 4.2.6.RELEASE

    Maven 3.3.9

    Jdk 1.7

    Idea 15.04

  2.必不可少jar包依赖

三、开发步骤

  【1】.基于特定基类

    1. 编写任务类,该类需要继承自QuartzJobBean

  2.在spring配置文件中配置作业类JobDetailFactoryBean、作业调度的触发方式(触发器)、调度工厂

注意:

  1).org.springframework.scheduling.quartz.JobDetailBean有两个属性.

    jobClass属性即我们在java代码中定义的任务类.

    jobDataAsMap属性即该任务类中需要注入的属性值.

  2).Quartz的作业触发器有两种(两种任选其一就行)

    org.springframework.scheduling.quartz.SimpleTriggerFactoryBean:只支持按照一定频度调用任务,如每隔30分钟运行一次.

    org.springframework.scheduling.quartz.CronTriggerFactoryBean:支持到指定时间运行一次,如每天12:00运行一次等.

  3).org.springframework.scheduling.quartz.SchedulerFactoryBean的参数triggers指定的就是之前配置的触发器的名字.

    3.运行结果

   

使用Spring整合Quartz轻松完成定时任务

  【2】.不基于特定的基类

    1.编写任务调度类

    2.在spring配置文件中配置作业类MethodInvokingJobDetailFactoryBean、作业调度的触发方式(触发器)、调度工厂

注意:MethodInvokingJobDetailFactoryBean,有两个关键属性:

    targetObject指定任务类.

    targetMethod指定运行的方法.

使用Spring整合Quartz轻松完成定时任务

四、总结

  Quartz属于重量级的定时任务框架,我们一般都会选择轻量级的如Spring Task定时任务进行开发,但是遇到比较棘手的,这也是一种解决问题的方式。