`
neil-jh
  • 浏览: 145538 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

在spring中使用Timer任务调度

阅读更多
在Spring 中主要提供了以下三种Timer支持:
1) ScheduledTimerTask,它对TimerTask提供封装并或配置调度信息;
2)通过MethodInvokingTimerTaskFactoryBean类可以将一个Bean的方法封装为TimerTask;
3)通过TimerFactoryBean可以更方便地配置Timer,此外让Timer的生命周期和Spring容器的生命周期相关,在初始化TimerFactoryBean后,启动Timer,在Spring容器关闭前取消Timer。

集成TimerTask 容易造成对业务代码的侵入,这种方式更符合spring的思想。

使 用Spring 时,您并不一定要继承TimerTask 来定义一个任务,Spring 提供 org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean ,可以让您直接指定呼叫某个物件的方法,例如可以改写一下 使用 TimerTask 中的DemoTask 类别,这次不用继承TimerTask 类别:

DemoTask.java

package onlyfun.caterpillar;   
  
public class DemoTask {   
    public void execute() {   
        System.out.println("Task is executed.");   
    }   
}  


接着只要在Bean 定义档中使用MethodInvokingTimerTaskFactoryBean 即可,例如:
beans-config.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="demoTask"  
           class="onlyfun.caterpillar.DemoTask"/>  
  
    <bean id="timerTaskBean"  
          class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">  
        <property name="targetObject">  
            <ref bean="demoTask"/>  
        </property>  
        <property name="targetMethod">  
            <value>execute</value>  
        </property>         
    </bean>  
          
    <bean id="scheduledTimerTask"  
          class="org.springframework.scheduling.timer.ScheduledTimerTask">  
        <property name="timerTask">  
            <ref bean="timerTaskBean"/>  
        </property>  
        <property name="period">  
            <value>5000</value>  
        </property>  
         <property name="delay">  
            <value>1000</value>  
        </property>          
    </bean>  
      
    <bean id="timerFactoryBean"  
          class="org.springframework.scheduling.timer.TimerFactoryBean">  
        <property name="scheduledTimerTasks">  
            <list>  
                <ref bean="scheduledTimerTask"/>  
            </list>  
        </property>  
    </bean>  
</beans>  



执行时可以直接使用 使用 TimerTask 中的TimerTaskDemo 类别,在底层,MethodInvokingTimerTaskFactoryBean 会自动建立TimerTask 的实例以呼叫目标物件上的指定方法。



分享到:
评论

相关推荐

    spring timer、quartz俩种任务调度

    实现了spring配置比较流行的任务调度操作,java timer 和 quartz俩种方式 并且有注释描述。

    spring中的任务调度器

    在Spring中,使用JDK的Timer类库来做任务调度功能不是很方便,关键它不可以象cron服务那样可以指定具体年、月、日、时和分的时间。你只能将时间通过换算成微秒后传给它。如任务是每天执行一次,则需要在spring中如下...

    运用Spring框架实现简单调度

    JAVA开发语言中,调度程序实现的办法有很多,从最底层的线程到Timer,都是最基本的调度实现。当前很多开源项目也提供了比较全面的调度功能,如quartz、jcrontab、JobServer等,在这里我介绍一种比较简单的调度,没有...

    Spring Boot中的@Scheduled注解:定时任务的原理与实现

    这个注解主要基于Java的内置Timer类以及Quartz等定时任务库,但在Spring Boot中,它提供了更加简洁和易用的方式来实现定时任务。 # 实现原理 @Scheduled注解的实现原理主要依赖于Spring框架的任务调度机制。当...

    spring任务调度实例

    关于spring调度的例子;| 两种方法:quartz 和 timer;| 适合学习;| 已经调试通过

    java是使用timer调度的例子

    java中用timer调度,像spring提供的Quartz一样,这里是自己调用java API中的timer写的,忘下载者给与评价

    Java关于时间调度的几种实现方(Timer Quartz Spring)

    Java关于时间调度的几种实现方(Timer TimerTask Quartz Spring)

    SPRING 定时器的使用

    并非应用系统中发生的所有事情都是由用户的动作引起的。...在Spring中有两种流行配置:Java的Timer类和OpenSymphony的Quartz来执行调度任务。下面以给商丘做的接口集抄900到中间库的日冻结数据传输为例:

    Sring最佳实践-集成任务调度服务

    Sring最佳实践-集成任务调度服务,之前做的Demo,希望对大家有所帮助!!!

    Spring排程(Scheduling)技术

    Spring排程(Scheduling)技术 1、排程(Scheduling)原理 2、什么是Timer 1)、执行一次 2)、周期执行 3、在spring中使用Timer 4、在spring中使用Quartz调度器

    任务调度开源框架Quartz动态添加、修改和删除定时任务

    Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring+3.x企业应用开发实战光盘源码(全)

     第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。  第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。  第15章:对...

    Spring.3.x企业应用开发实战(完整版).part2

    12.2 在Spring中使用Hibernate 12.2.1 配置SessionFactory 12.2.2 使用HibernateTemplate 12.2.3 处理LOB类型数据 12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 使用注解配置 12.2.7 事务...

    spring in action英文版

     7.3.1 使用Java Timer调度任务  7.3.2 使用Quartz调度器  7.3.3 按调度计划调用方法  7.4 使用JMS发送消息  7.4.1 使用JMS模板发送消息  7.4.2 消费消息  7.4.3 转换消息  7.5 小结 第三...

    Spring 2.0 开发参考手册

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    Spring in Action(第二版 中文高清版).part2

    12.3.1 使用Java Timer调度任务 12.3.2 使用Quartz调度器 12.3.3 按调度计划调用方法 12.4 使用JMX管理Spring Bean 12.4.1 将Spring Bean输出为MBean 12.4.2 远程访问MBean 12.4.3 处理通知 12.5 小结 第...

    Spring in Action(第二版 中文高清版).part1

    12.3.1 使用Java Timer调度任务 12.3.2 使用Quartz调度器 12.3.3 按调度计划调用方法 12.4 使用JMX管理Spring Bean 12.4.1 将Spring Bean输出为MBean 12.4.2 远程访问MBean 12.4.3 处理通知 12.5 小结 第...

    spring4.1核心包

    在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。这个jar 文件为Spring 核心提供了大量扩展。可以找到使用...

Global site tag (gtag.js) - Google Analytics