spring中的一种任务配置方法!

相信大家在开发中经常遇到“定时任务”的的需求,例如:定时后台生成报表,定时触发后台日志等等。。。。。

在没有接触spring的时候,这样的需求好像是学习多线程的例子。大家的设计思路不外呼:启动程序的时候启动一个任务线程,间隔固定的时间让线程激活一次。

接触spring后,发现这个需求实现的愈发的简单,谢谢xml配置文件就可以了,不用开发人员写线程控制代码,减少了开放工作量。

下面就把我配置的第一个例子当笔记记录下来,方便自己日后查询。

 

从代码开始把:

package com.test;

public class MyTimer {

    public static void main(String[] args) {

        // TODO 自动生成方法存根

        MyTimer mt=new MyTimer();

        mt.myTime();

    }

    public void myTime(){

        for (int i=0;i<10;i++){

        System.out.println("我就是要输出!标准方法输出lll");

        }

    }

}

 

方法十分的简单,就一个myTime方法,循环输出一句测试代码。剩下的工作就是写配置了。

 

<bean id="MyTimer" class="com.test.MyTimer"></bean>

 

    <bean id="methodInvokingTask"

        class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">

        <property name="targetObject">

            <ref bean="MyTimer" />

        </property>

        <property name="targetMethod">

            <value>myTime</value>

        </property>

    </bean>

 

    <bean id="scheduledTadk"

        class="org.springframework.scheduling.timer.ScheduledTimerTask">

        <property name="delay">

            <value>9000</value>

        </property>

        <property name="period">

            <value>9000</value>

        </property>

        <property name="timerTask">

            <ref bean="methodInvokingTask" />

        </property>

    </bean>

   

    <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">

    <property name="scheduledTimerTasks">

    <list>

    <ref local="scheduledTadk"/>

    </list>

    </property>

     </bean>

 

 

<bean id="MyTimer" class="com.test.MyTimer"></bean>这个没甚么多说的,我们的测试代码bean文件。

 

<bean id="methodInvokingTask"

        class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">

        <property name="targetObject">

            <ref bean="MyTimer" />

        </property>

        <property name="targetMethod">

            <value>myTime</value>

        </property>

    </bean>

这个是用来指定需要启动哪个类中的哪个方法为任务的bean.  targetObject 指定类,tergetMethod 指定类中的哪个方法是任务方法。

 

<bean id="scheduledTadk"

        class="org.springframework.scheduling.timer.ScheduledTimerTask">

        <property name="delay">

            <value>9000</value>

        </property>

        <property name="period">

            <value>9000</value>

        </property>

        <property name="timerTask">

            <ref bean="methodInvokingTask" />

        </property>

    </bean>

 

这个是指定任务的触发时间,delay 指定容器初始运行时间,也就是第一次允许的时间,一般从容器启动后开始。 Period指定任务的间隔时间。忘记说了,参数是毫秒单位,60000表示一分钟。 timerTask 指定的是任务方法所在的bean。(特别说明:老版本中,Timer启动任务需要你的任务类继承TimerTask类,这里不介绍了,spring 2.0 以后的版本帮我们简化了工作,只需要指定方法就可以了。)

 

 

<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">

    <property name="scheduledTimerTasks">

    <list>

    <ref local="scheduledTadk"/>

    </list>

    </property>

     </bean>

这个是启动bean,看名字也知道是工厂。一个管理任务的工厂,你的程序中,也许不只一个任务,都可以配置到list 节点下面。总体来说,还是很简单滴。。。。。

 

这样,我们的配置完成了,可以运行下看看效果了,启动tomcat 。。。。。。。 几秒后,我们期望的测试输出显示。。。。。。。。。

 

spring 中还可以配置 quartz,这个下面介绍把,今天就学习到这里。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值