您的位置:首页 > 编程语言 > Java开发

Spring3中定时器的配置使用之Quartz

2015-05-19 11:18 155 查看
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 
<!-- 两种定时器配置,任选其一即可   -->   

 <!--  spring3.0之前的用法,配置比较繁琐 --> 

例子: 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>

<!--  spring3.0之后的新用法,配置有变化,而且比以前简单了很多 --> 

 <!-- 定时器  这个是定时器要调用方法的类 --> 

  <bean id="job1" class="com.Job1"></bean>

  <!-- 定义调用对象和调用对象的方法   --> 

  <task:scheduled-tasks>

    <!-- 调用的类job1调用类中的方法execute
 这里表示的是每10秒执行一次 -->

    <task:scheduled ref="job1" method="execute"
cron="0/10 * * * * ?" />

  </task:scheduled-tasks> 

 

</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");

}

}

测试结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 任务调度