`
Copperfield
  • 浏览: 260282 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
C407adc3-512e-3a03-a056-ce4607c3a3c0
java并发编程陷阱
浏览量:25137
社区版块
存档分类

spring中集成TimerTask执行定时任务

 
阅读更多

Spring对Timer的支持的核心是由ScheduledTimerTask和TimerFactoryBean类组成的。 ScheduledTimerTask类是对TimerTask的包装器实现,这样你就可以为这个任务定义触发器信息。使用 TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTask bean自动创建Timer实例。

1、自定义timerTask,比如:定时输出ServletContext中的信息,本例中输出项目的绝对路径(比如:D:\software\apache-tomcat-6.0.33\webapps\spring\)

public class BirthdayReminderTimerTask extends TimerTask implements ServletContextAware{
  /*通过实现ServletContextAware可获得servletContext*/
  private ServletContext servletContext;
  private static Logger logger = Logger.getLogger(BirthdayReminderTimerTask.class);
  @Override
  public void run() {
//    logger.debug("BirthdayReminderTimerTask is running");
    setServletContext(servletContext);
    try {
      System.out.println(this.servletContext.getRealPath("/"));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public void setServletContext(ServletContext servletContext) {
    this.servletContext = servletContext;    
  }
}

 2、在spring的bean配置文件中配置,当系统加载该文件时,配置的定时器将自动启动,同时被spring管理。

    <!--自定义任务-->    
        <bean id="birthdayReminder" class="com.jep.task.BirthdayReminderTimerTask"></bean>  
          
        <!-- ScheduledTimerTask类是对TimerTask的包装器实现,这样你就可以为这个任务定义触发器信息。 -->  
        <bean id="birthdayReminderTimerTask"  
            class="org.springframework.scheduling.timer.ScheduledTimerTask">  
            <!-- 设置启动延迟 -->  
            <property name="delay">  
                <value>3000</value>  
            </property>  
            <!-- 后续延迟 -->  
            <property name="period">  
                <value>5000</value>  
            </property>  
            <!-- 指定触发器信息 -->  
            <property name="timerTask">  
                <ref local="birthdayReminder" />  
            </property>  
        </bean>  
          
        <!-- 使用TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTask bean自动创建Timer实例。 -->  
        <bean id="timerFactory"  
            class="org.springframework.scheduling.timer.TimerFactoryBean">  
            <property name="scheduledTimerTasks">  
                <list>  
                    <ref local="birthdayReminderTimerTask" />               
                </list>  
            </property>          
        </bean>  

   3、对于web项目,需要在web.xml中进行如下配置

<!-- Spring ApplicationContext配置文件的路径此参数用于后面的Spring-Context loader -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:beans.xml</param-value>
	</context-param>
    <!--Spring ApplicationContext 载入 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
分享到:
评论

相关推荐

    TimerTask定时执行任务

    【标题】:“TimerTask定时执行任务”探讨 在Java编程中,定时任务是常见的需求,例如数据备份、日志清理、任务调度等。`TimerTask`是Java内置的一个定时任务框架,它允许开发者创建和安排周期性或者一次性执行的...

    Spring定时器TimerTask用法

    3. **使用TimerTask与Spring集成** 虽然Spring有更强大的定时任务解决方案,但如果你仍然想使用`TimerTask`,可以将其封装到一个Spring Bean中,然后由Spring来管理和调用。以下是一个示例: ```java @Component ...

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

    与Spring集成后,可以使用Spring提供的标签来简化Quartz的配置,使得整个任务调度更加方便。 总结来说,定时任务是开发者常用的一种工具,它的实现方式多样,从简单的Java Timer到强大的Quartz框架都有涉及。Spring...

    Spring整合TimerTask实现定时任务调度

    需要注意的是,虽然`TimerTask`和Spring的`ScheduledTimerTask`可以实现定时任务调度,但在实际项目中,Spring的`@Scheduled`注解或Quartz等第三方库通常更为推荐,因为它们提供了更强大的定时任务管理能力,包括更...

    Spring提供的三种定时任务机制及其比较

    通过在方法上添加此注解,Spring的定时任务执行器会自动处理任务调度。这种方法适用于简单任务,且不需Quartz的复杂特性。例如: ```java @Component public class ScheduledTasks { @Scheduled(fixedRate = ...

    spring + jdk TimerTask定时器

    本文将深入探讨如何在Spring框架中结合JDK的`TimerTask`来创建和管理定时任务。 ### Spring定时任务简介 Spring提供了`org.springframework.scheduling`包,其中包含用于调度任务的组件。最常用的有两种方式:基于...

    关于 spring 里的定时任务设置

    在Spring框架中,定时任务的实现提供了多种方式,如基于Java Timer API的定时任务和基于Quartz库的定时任务。这两种方法各有优缺点,适用于不同的场景。以下将详细讲解这两种方式。 1. 基于Java Timer API的定时...

    两种方式通过spring实现定时执行任务操作

    ### 一、Spring集成的`TimerTask` `TimerTask`是Java内置的定时任务工具,但Spring提供了与之集成的方式,让定时任务的管理更加灵活和方便。以下是如何在Spring中使用`TimerTask`: 1. **创建TimerTask实现类**: ...

    spring几种定时执行任务方法 TimeTask Quartz

    - **事务支持**:可以将任务执行与数据库事务相结合,增强数据一致性。 **示例**: ```java JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("job1", "group1") .build(); Trigger trigger = ...

    spring2.0学习笔记+spring定时任务

    标题中的“spring2.0学习笔记+spring定时任务”表明了这个压缩包文件包含的是关于Spring框架2.0版本的学习...通过学习这些资料,开发者可以更好地掌握Spring框架的定时任务功能,从而在实际项目中灵活地安排任务执行。

    Spring集成Quartz定时任务框架介绍.docx

    ### Spring集成Quartz定时任务框架介绍 #### 一、引言 在现代JavaEE应用程序开发过程中,定时任务是一项常见的需求。这些任务可能包括但不限于:每天固定时间生成报表、定期清理缓存、定时发送邮件提醒等。传统的...

    java中spring与Quartz 整合定时任务.pdf

    Spring提供了灵活的定时任务支持,而Quartz则是一个强大的作业调度框架,可以用来安排复杂的任务执行计划。下面我们将深入探讨如何在Spring中配置定时任务以及如何与Quartz结合。 首先,从给出的`...

    java定时任务的实现方式

    Quartz是一个功能强大的任务调度框架,它允许开发者灵活地定义任务执行规则。在Spring中集成Quartz,首先要引入Quartz的jar包,然后在Spring的配置文件中定义任务和调度策略。在示例中,首先创建一个名为`SavaLog`的...

    Java里timer执行定时任务

    System.out.println("定时任务执行"); } } ``` 这里的 `schedule()` 方法签名如下: ```java public void schedule(TimerTask task, long delay) ``` - **`task`**:要执行的任务,必须是一个 `TimerTask` 对象...

    java定时任务代码-spring管理.txt

    根据提供的文件信息,本文将详细解析Java定时任务与Spring框架集成的相关知识点,包括如何在Spring环境中配置和管理定时任务。 ### Java定时任务简介 在Java中实现定时任务主要有以下几种方式: 1. **Timer和...

    Spring的quartz和Timer实现定时

    但`Timer`有一些限制,比如它不是线程安全的,且只有一个线程执行所有任务,这意味着如果一个任务执行时间过长,其他任务将被阻塞。 以下是一个`Timer`的简单使用示例: ```java TimerTask task = new TimerTask() ...

    java中spring与Quartz 整合定时任务.docx

    Spring提供了对Quartz的集成,使得我们可以方便地在Spring应用上下文中配置和管理定时任务。下面将详细解释如何在Spring中整合Quartz以及相关的知识点。 首先,Quartz是一个开源的作业调度框架,它允许开发者定义...

    spring定时任务

    System.out.println("定时任务执行中..."); } } ``` 在Spring配置中启用定时任务扫描和配置线程池: ```xml ``` 这样,Spring就会自动扫描并注册带有`@Scheduled`注解的方法,并根据注解的参数进行调度。 ...

    spring2.0 job Quartz 和Time一样的定时任务

    4. 故障恢复:Quartz具有故障恢复和集群支持,如果任务执行失败,它可以重新安排任务执行,而Spring 2.0的`Job`则需要额外的代码来实现类似功能。 总的来说,对于简单的定时任务需求,Spring 2.0的`Job`结合`Task...

Global site tag (gtag.js) - Google Analytics