一、背景
上次我们介绍了如何使用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.运行结果
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEzMlBTZmdjN0EDNkRWNlZjZyQGN1QTZ2czY4QjY1cTYfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
【2】.不基于特定的基类
1.编写任务调度类
2.在spring配置文件中配置作业类MethodInvokingJobDetailFactoryBean、作业调度的触发方式(触发器)、调度工厂
注意:MethodInvokingJobDetailFactoryBean,有两个关键属性:
targetObject指定任务类.
targetMethod指定运行的方法.
四、总结
Quartz属于重量级的定时任务框架,我们一般都会选择轻量级的如Spring Task定时任务进行开发,但是遇到比较棘手的,这也是一种解决问题的方式。