spring使用timer完成任务调度

xiaoxiao2026-05-26  20

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

转载请注明原文地址: https://www.6miu.com/read-5049439.html

最新回复(0)