jacksun1978

导航

 

Spring的任务调度有两种方式,一种是利用Java Timer,另外一种是使用quartz,quartz不但可以指定运行的频率,还可以指定在什么时间执行,一般建议使用quartz。Java Timer 简化了原来JDK 的任务调度,Spring为支持Timer提供以下两个工具类:

   1)ScheduledTimerTask,用于封装一个调度类

   2)TimerFactoryBean:用于启动线程,完成实际的调度

任务调度的实现步骤如下:

   1、首先编写一个任务类,该类继承TimerTask,例如:

public class CheckWinner extends TimerTask {

    private AuctionManager auctionManager;
   
    public AuctionManager getAuctionManager() {
        return auctionManager;
    }

    public void setAuctionManager(AuctionManager auctionManager) {
        this.auctionManager = auctionManager;
    }

    @Override
    public void run() {
        try{
            auctionManager.updateWinner();   
        }catch(Exception ex){
            ex.printStackTrace();
        }

    }

}

   在该类中,调用逻辑服务接口,实现特定的任务。

  2、在application.xml中,将该类配置成一个bean。

<bean id="checkWinner" class="com.haiyisoft.cc.study.auction.schedule.CheckWinner">
<property name="auctionManager" ref="auctionManager"/>
</bean>

  此时,任务类不知道何时调度,调度的频率,也没有启动调度线程。

  3、在application.xml中,配置调度任务的时间和频率,此时用到Spring框架的ScheduledTimerTask工具类。

<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
    <property name="delay" value="0"/>
    <property name="period" value="60000"/>
    <property name="timerTask" ref="checkWinner"/>
</bean>

  4、在application.xml中,配置启动调度线程,此时用到Spring框架的TimerFactoryBean

<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
    <property name="scheduledTimerTasks">
        <list>
            <ref bean="scheduledTask"/>
        </list>
    </property>
</bean>

posted on 2012-07-20 17:10  jacksun1978  阅读(462)  评论(0编辑  收藏  举报