Spring 定时任务浅谈(一)赵王涛
Spring 对 JDK Timer 调度的支持
单纯使用java中的 Timer 类 的 schedule()方法 能实现定时任务,但是在有的应用程序中我们需要配置一些数据,因此我们需要使用spring来管理这些类从而使得我们的程序易于配置 而且 触发器信息是硬编码到程序里面的,当需要修改时我们很纠结,需要修改代码
并重新编译。
通过使用Spring来管理,这样我们可以把所有的任务和触发器配置以及对Timer的控制
都交给Spring来处理,这样就能在外部定义任务和他的触发器。
Spring对Timer支持的核心ScheduledTimerTask 和 TimerFactoryBean组成的
ScheduledTimerTask是对TimeTask的包装,并可以为此配置触发器信息。TimeFactory
Bean能够配置创建触发器,并能自动创建Timer实例。
一个完整的配置:
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id = "job" class = "com.allen.test.HelloWordTest"/>
<bean id = "timeTas" class = "org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="delay">
<value>1000</value>
</property>
<property name="period">
<value>9000</value>
</property>
<property name="timerTask">
<ref local = "job"/>
</property>
</bean>
<bean id = "timerFactory" class = "org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local = "timeTas"/>
</list>
</property>
</bean>
</beans>
HelloWordTest.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class TimerFactoryBeanExample {
public static void main(String args[]){
ApplicationContext ctx = new FileSystemXmlApplicationContext("E:/WorkSpace2/Test/src/applicationContext.xml");
}
}