一、依赖的jar包
quartz-2.2.1.jar
quartz-jobs-2.2.1.jar
c3p0-0.9.1.jar (通过数据库存储定时任务时,需要用到)
slf4j-api-1.7.2.jar (日志相关)
maven配置
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
二、XML配置
新建文件spring-context-quartz.xml,并把文件加入到spring配置文件中:
<import resource="spring-context-quartz.xml"/>
spring-context-quartz.xml主要由三部分组成:
JobDetail:这里使用了MethodInvokingJobDetailFactoryBean,不再需要实现Job接口,普通的JavaBean
Trigger:这里使用了CronTrigger,通过时间表达式来执行任务,非常灵活,这里就不再多介绍了
Scheduler:调度器,按Trigger配置时间点来执行JobDetail配置的方法
<!-- 省略头部schema部分 -->
<!-- job的配置开始 -->
<bean id="jobDetail1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="myJob" />
</property>
<property name="targetMethod">
<value>checkJob1</value>
</property>
</bean>
<bean id="jobDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="myJob" />
</property>
<property name="targetMethod">
<value>checkJob2</value>
</property>
</bean>
<!-- job的配置结束 -->
<!-- 启动触发器的配置开始 -->
<bean id="jobTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="jobDetail1" />
</property>
<property name="cronExpression">
<!-- 每天凌晨2点触发 -->
<value>0 0 2 * * ?</value>
</property>
</bean>
<bean id="jobTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="jobDetail2" />
</property>
<property name="cronExpression">
<!-- 每隔1小时执行一次 -->
<value>0 0 0/1 * * ?</value>
</property>
</bean>
<!-- 启动触发器的配置结束-->
<!-- 调度的配置开始 -->
<bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="jobTrigger1" />
<ref bean="jobTrigger2"/>
</list>
</property>
</bean>
<!-- 调度的配置结束 -->
三、Java类
第二步中使用了MethodInvokingJobDetailFactoryBean来配置JobDetail,所以Java类不需要再实现Job接口的execute方法,普通的Java bean即可:
@Component("myJob")
public class MyJob {
public void checkJob1(){
//TODO
}
public void checkJob2(){
//TODO
}
}
附上quartz-2.2.1相关的jar包下载,或者从quartz官网下载其他版本
http://www.quartz-scheduler.org/downloads
下一篇将介绍quartz2最简单的使用
本文详细解析 Quartz 2.2.1 的 jar 包依赖、XML 配置及 Java 类实现,包括 job、trigger 和 scheduler 的配置方法,以及一个简单的 Java 类实例演示。
2828

被折叠的 条评论
为什么被折叠?



