Ø 使用TimerTask创建定制的timer tasks
<bean id="timeTaskExample" class="example.timertask.TimeTaskExample"></bean>
<!-- 使用ScheduledTimerTask来包装任务 -->
<bean id="scheduledTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="timeTaskExample" />
<!—
任务执行周期 2m 关于一些任务的参数请参考JDK doc文档和Spring相关文档
注意若要让任务只运行一次,你可以把period属性设置为0(或者负值)
-->
<property name="period">
<value>2000</value>
</property>
<!-- 延时1m 执行任务 -->
<property name="delay">
<value>1000</value>
</property>
</bean>
<!-- 使用TimerFactoryBean来实现任务 -->
<bean id="timerFactory"
class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTask" />
</list>
</property>
</bean>
实例如下:
public class CheckWiner extends TimerTask
{
private AuctionManager mgr;
public void setMgr(AuctionManager mgr)
{
this.mgr = mgr;
}
public void run()
{
System.out.println("---------------------");
try
{
mgr.updateWiner();
}
catch (AuctionException ae)
{
ae.printStackTrace();
}
}
}
<bean id="checkWiner" class="org.yeeku.schedule.CheckWiner">
<property name="mgr" ref="auctionManager"/>
</bean>
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="delay" value="0"/>
<property name="period" value="86400000"/>
<property name="timerTask" ref="checkWiner"/>
</bean>
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTask"/>
</list>
</property>
</bean>
使用 MethodInvokingTimerTaskFactoryBean类, 可以让你周期性的调用某个方法:示例代码如下
package example;
import java.util.Date;
publicclass BusinessObject {
publicvoid doIt() {
System.out.println("现在时间: " + new Date());
}
}
applicationContext.xml设置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="businessObjectExample" class="example.BusinessObject" />
<!-- 周期性的调用某个方法 -->
<bean id="methodTimeTask"
class="org.springframework.scheduling.timer.
MethodInvokingTimerTaskFactoryBean">
<!—调用方法的对象-->
<property name="targetObject" ref="businessObjectExample" />
<!—调用方法的名称-->
<property name="targetMethod" value="doIt" />
</bean>
<!-- 使用ScheduledTimerTask来包装任务 -->
<bean id="scheduledTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="methodTimeTask" />
<!-- 任务执行周期 2m -->
<property name="period">
<value>2000</value>
</property>
<!-- 延时1m 执行任务 -->
<property name="delay">
<value>1000</value>
</property>
</bean>
<!-- 使用TimerFactoryBean来实现任务-->
<bean id="timerFactory"
class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTask" />
</list>
</property>
</bean>
</beans>