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");
}
}
测试结果:
需要注意:
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");
}
}
测试结果:
相关文章推荐
- Spring3中定时器的配置使用之Quartz
- Spring3中定时器的配置使用之Quartz
- Spring 定时器配置 基于配置文件 (使用 Spring3.2 、 quartz-1.6.5)
- Spring框架的定时器(Quartz)的配置和使用
- Spring3中定时器的配置使用之Quartz
- Quartz 定时器的使用之 XML 配置方式 (二)
- Spring框架中的定时器quartzquartz如何使用和配置
- spring quartz定时器的简单配置和使用
- Quartz在JBOSS AS7中配置与使用
- Quartz使用 在程序中启停定时器
- Spring中Quartz的配置 定时器 示例
- Quartz定时器使用
- Spring3.1.1 quartz1.8.6 定时器配置
- 有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。
- Quartz使用 在程序中启停定时器
- 在WEB中,Quartz使用配置文件调用
- Spring框架中的定时器 如何使用和配置
- spring框架整合使用定时任务框架java quartz的示例代码配置
- quartz_spring 定时器配置
- 定时器的实现、java定时器Timer和Quartz介绍与Spring中定时器的配置