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

来源:互联网 发布:进军黑科技和人工智能 编辑:程序博客网 时间:2024/05/16 07:34


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

}


}

测试结果:



0 0
原创粉丝点击