`
neil-jh
  • 浏览: 147778 次
  • 性别: 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中的使用。 首先,我们来看`Spring Timer`。`Spring Timer`是Spring框架提供的一个简单任务调度工具,它基于Java的`java.util.Timer`类。通过`@Scheduled`注解,...

    在Spring中使用Timer --实现由时间触发的事件任务.doc

    在Spring中使用`Timer`,有两种主要的方法来创建和调度这些时间触发的事件任务: 1. **继承TimerTask创建任务** 这种方法与传统的Java `Timer`用法相似。你需要创建一个类,继承自`java.util.TimerTask`,并重写`...

    spring任务调度实例

    而在Spring框架中,任务调度是一个重要的特性,用于自动执行预定的任务。本实例主要探讨了Spring如何实现任务调度,特别是使用Quartz和Timer两种不同的方法。 首先,Quartz是一个开源的作业调度框架,它允许开发者...

    Spring使用timer定时器-能精确几点运行定时任务

    本教程将详细介绍如何在Spring中使用`Timer`来实现能精确到几点运行的定时任务。 首先,我们需要理解`Timer`的基本概念。`java.util.Timer`和`java.util.TimerTask`是Java中的两个类,用于调度未来任务的执行。`...

    Spring的定时任务开发及对Quartz和Timer支持

    通过实现这些接口或使用其默认实现,如ThreadPoolTaskExecutor和ConcurrentTaskScheduler,我们可以轻松地在Spring应用中集成任务调度。 接下来,Spring还支持集成第三方定时任务库,如Quartz和Timer。Quartz是一个...

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

    要在Spring中使用Timer,你需要创建一个TimerTask实现类,然后在Spring配置文件中声明并配置该任务。例如: ```xml &lt;bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean"&gt; ...

    Spring 使用Timer quartz区别

    在Springexample压缩包中,可能包含了一些示例代码,用于演示如何在Spring中使用这两种定时任务工具。通过学习这些示例,你可以更直观地了解它们的用法和区别,并根据项目需求来决定采用哪种方案。总的来说,选择`...

    Spring的 Scheduled任务调度.docx

    在 Spring 框架中,定时任务调度是一个重要的特性,尤其在微服务和分布式系统中,定时任务常常用于数据同步、清理、统计等场景。Spring 提供了多种定时任务的实现方式,包括 Java 自带的 Timer、Quartz 和 Spring ...

    JBPM3.2与Spring结合时任务调度的实现.doc

    JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...

    小码农的代码(四)----------JAVA中Timer定时器与Spring定时任务

    在Java编程语言中,`Timer`类和Spring框架的定时任务是两种常见的实现定时执行任务的方式。本篇文章将深入探讨这两个主题,旨在帮助初学者理解它们的工作原理以及如何在实际项目中应用。 首先,让我们来看一下Java...

    Spring的quartz和Timer实现定时

    在Java世界中,任务调度是十分重要的,Spring框架提供了多种定时任务实现方式,其中包括Quartz和Timer。Quartz是一款开源的作业调度框架,而Timer是Java标准库中的一个类,用于执行定时任务。这两个工具都能帮助...

    spring中的任务调度器

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

    Spring 任务调度

    【Spring 任务调度】是Spring框架中用于自动化执行任务的功能,它允许开发者安排任务在特定时间或间隔执行,无需用户交互。任务调度在许多场景下都非常有用,比如定期备份数据库、执行系统统计、检查新邮件等。 1. ...

    java定时任务调度

    在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring框架的`@Scheduled`注解以及Quartz库。 1. **Java内置的`java.util.Timer`和`TimerTask`**: - `Timer`类用于创建一...

    Spring 框架自带定时任务和Quartz定时任务

    在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...

    java是使用timer调度的例子

    下面我们将深入探讨如何使用`Timer`进行任务调度,以及与Spring的Quartz框架的对比。 1. **Timer类的基本用法** - 创建`Timer`对象:`Timer timer = new Timer();` - 定义`TimerTask`:创建一个继承自`TimerTask`...

    关于 spring 里的定时任务设置

    在上述示例中,我们看到了如何使用Spring结合Java Timer API来创建定时任务。首先,自定义了一个`SayHelloTask`类,继承自`TimerTask`,并在`run()`方法中定义了具体要执行的任务。例如,输出一句"测试 TimerTask : ...

    spring定时任务实现

    本文主要探讨了Spring中实现定时任务的三种主要方法:Java的`java.util.Timer`、Quartz库以及Spring自身的Task调度器。 首先,Java的`java.util.Timer`是一个基础的定时任务工具,它可以按照设定的频率执行任务,但...

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

    本篇文章将深入探讨Java中的三种主要时间调度实现:`Timer`、`TimerTask`、以及第三方库`Quartz`和`Spring`的定时任务功能。 ### 1. Java `Timer` 和 `TimerTask` `java.util.Timer` 类提供了一个调度任务的方法,...

Global site tag (gtag.js) - Google Analytics