刚才在java分类中写过一篇JDK中的Timer和TimerTask实现任务调度的文章,在《spring2.0宝典》中提到在Spring中用Timer实现任务调度,省去了调度任务类的编写,而将任务调度配置在spring的配置文件中,实现类为org.springframework.scheduling.timer.ScheduledTimerTask。
经过spring的包装后,不但省去了任务调度类的编写,而且采用配置方式,修改方便。So good~
以下的例子很简单,只是实现定时将nameList中的名字打出来,具体采用时可根据业务修改,在此只做使用掩饰之用。
一. Timer任务类代码如下:
import java.util.*;
public class CheckNames extends TimerTask
...{
private List nameList;
public void setNameList(List nameList)
...{
this.nameList = nameList;
}
public void run()
...{
for (Iterator it = nameList.iterator(); it.hasNext(); )
...{
System.out.println(it.next());
}
}
}
二. spring的完整配置文件如下:
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 定义一个任务bean,它必须继承TimerTask--> <bean id="checkName" class="CheckNames"> <property name="nameList"> <list> <value>Amigo Xie</value> <value>Xie Xing xing</value> </list> </property> </bean> <!-- 将目标任务包装成可调度任务--> <bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> <!-- 配置任务调度任务的延迟时间--> <property name="delay"> <value>1000</value> </property> <!-- 配置两次任务调度之间的时间间隔--> <property name="period"> <value>2000</value> </property> <!-- 确定任务调度的目标任务--> <property name="timerTask"> <ref local="checkName"/> </property> </bean> <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean"> <property name="scheduledTimerTasks"> <!-- 下面用于配置一系列的任务调度--> <list> <ref local="scheduledTask"/> </list> </property> <!-- 设置该任务调度器是否为后台线程,设置为false表示不是后台线程--> <property name="daemon"> <value>false</value> </property> </bean> </beans>
三. 测试类
可写一个测试类,在该测试类的main方法中加入如下语句;
ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
通过该语句创建了ApplicationContext 实例,但程序不会中止,因为启动了任务调度
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/amigoxie/archive/2006/12/24/1458291.aspx