spring使用timer完成任务调度

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值