Spring3中定时器的配置使用之Quartz
需要注意:
spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错。
至于原因,则是spring对于quartz的支持实现,org.springframework.scheduling.quartz.CronTriggerBean继承了org.quartz.CronTrigger,
在quartz1.x系列中org.quartz.CronTrigger是个类,
而在quartz2.x系列中org.quartz.CronTrigger变成了接口,
从而造成无法用spring的方式配置quartz的触发器(trigger)
首先spring 头需要加入:
xmlns:task="http://www.springframework.org/schema/task"
路径:
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
<!--
例子: 1、被调度的类
java代码
package com;
import java.util.Date;
public class Job1{
public void execute(){
System.out.println("job1-" + new Date());
}
}
2、spring的配置文件:
<!-- 计划调度管理工厂 -->
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cornTrigger" />
</list>
</property>
</bean>
<!-- 定义Quartz任务组件触发的时间 -->
<bean id="cornTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobTask1" />
</property>
<property name="cronExpression">
<value>0/10 * * * * ?</value>
</property>
</bean>
<!-- 定义Quartz任务调度组件调用的对象和方法 -->
<bean id="jobTask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="job1">
</property>
<property name="targetMethod" value="execute">
</property>
</bean>
<!-- 要调用的工作Bean组件 -->
<bean id="job1" class="com.Job1"></bean>
<!--
</beans>
测试:
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestQuartz {
public static void main(String[] args) throws Exception {
ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
测试结果: