Ø 使用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>
