`

Spring的定时器功能

阅读更多

spring支持jdk内置的Timer类和Quartz Scheduler,两种Spring定时器的实现方式各有优点,可结合具体项目考虑是否采用。

1.Java Timer定时

首先继承java.util.TimerTask类实现run方法

import java.util.TimerTask;  
public class EmailReportTask extends TimerTask{  
    @Override  
    public void run() {  
        ...  
    }    
}  
在Spring定义

...

配置Spring定时器

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">  
<property name="timerTask" ref="reportTimerTask" />  
<property name="period">  
<value>86400000value>  
property>  
bean>  
timerTask属性告诉ScheduledTimerTask运行哪个。86400000代表24个小时

启动Spring定时器

Spring的TimerFactoryBean负责启动定时任务

<bean class="org.springframework.scheduling.timer.TimerFactoryBean">  
<property name="scheduledTimerTasks">  
   <list><ref bean="scheduleReportTask"/>list>  
property>  
bean>  
scheduledTimerTasks里显示一个需要启动的定时器任务的列表。  
可以通过设置delay属性延迟启动  
<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">  
<property name="timerTask" ref="reportTimerTask" />  
<property name="period">  
<value>86400000value>  
property>  
<property name="delay">  
<value>3600000value>  
property>  
bean>  
这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动

 

2.Quartz定时器


记得需继承QuartzJobBean类实现executeInternal方法

spring的定时器功能,它不仅实现起来方便,功能强大,而且在web开发时正好配合spring框架使用。

   

介绍spring的定时器,当然要先介绍配置文件applicationContext.xml了。

 

<bean name="job" class="org.springframework.scheduling.quartz.JobDetailBean">

     <property name="jobClass">

         <value>jaoso.news.web.action.JobAction</value>

     </property>

     <property name="jobDataAsMap">

         <map>

             <entry key="timeout">

                 <value>10</value>

              </entry>

         </map>

     </property>

</bean>

 

说明:org.springframework.scheduling.quartz.JobDetailBean是spring对你的类进行调度的代理,在jobClass中要指定你的任务类(com.yangsq.web.action.JobAction),在jobDataAsMap中向你的任务类中注入一些信息,当然也可以reference一个,不要忘记在你的任务里加入这些属性及set方法。

timeout属性设定了当服务器启动后过10秒钟首次调用你的JobAction。

 

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

     <property name="jobDetail">

         <ref bean="job"/>

     </property>

     <property name="cronExpression">

         <value>0 0/2 * * * ?</value>

     </property>

</bean>

 

说明:org.springframework.scheduling.quartz.CronTriggerBean是spring提供的触发器,在这个触发器中设定了要触发的job(jobDetail属性设定了先前定义的bean),同时设定了触发时间(cronExpression)---每隔两分钟(0 0/2 * * * ?),这个的设定方式最后会说明。

 

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

     <property name="triggers">

         <list>

             <ref local="cronTrigger"/>

         </list>

     </property>

</bean>

 

说明:org.springframework.scheduling.quartz.SchedulerFactoryBean这是一个spring的工厂bean,在他的triggers属性列表中加入刚才定义的触发器,这里可以定义多个触发器(list嘛)。

 

好了,配置文件就介绍完了,该介绍com.yangsq.web.action.JobAction类了,

 

引入包:

 

spring中的定时器功能 - 邱园杰 - 邱园杰的博客

说明:QuartzJobBean是spring自带的,把spring的jar包加入就行了,但是前两个包要去下了,呵呵,google吧。

 

 

 

spring中的定时器功能 - 邱园杰 - 邱园杰的博客

spring中的定时器功能 - 邱园杰 - 邱园杰的博客

 

当然要继承QuartzJobBean了,但是光extends不行,必须要重载他的executeInternal方法

spring中的定时器功能 - 邱园杰 - 邱园杰的博客

 

 

好了,一个spring的时间调度完成了。

 

附:时间配置说明

 

sping定时器的时间配置十分强大,下面将介绍如何进行配置。

spring中的定时器功能 - 邱园杰 - 邱园杰的博客

spring中的定时器功能 - 邱园杰 - 邱园杰的博客

分享到:
评论

相关推荐

    spring定时器 spring定时器

    Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在应用程序中安排周期性任务的执行。这个功能基于Java的`java.util.concurrent.ScheduledExecutorService`,并通过Spring...

    java 定时器 spring 定时器

    Java定时器和Spring定时器是Java开发中用于执行周期性任务的重要工具,它们在系统维护、数据同步、报告生成等场景中发挥着关键作用。本文将深入探讨这两个概念,以及如何在Spring框架中配置和使用定时器。 首先,...

    spring 定时器的两种实现

    首先,我们来看看使用Spring自带的定时任务功能。这主要依赖于`@EnableScheduling`和`@Scheduled`这两个注解。`@EnableScheduling`通常放在配置类上,用来开启调度任务的功能。而`@Scheduled`则可以标记在方法上,...

    spring定时器简单的demo

    Spring提供了Spring Task模块来实现定时任务,也就是我们常说的Spring定时器。这个"spring定时器简单的demo"应该包含了一个使用Spring Task实现简单定时任务的例子。 首先,Spring Task的配置通常在`...

    spring定时器简单实例

    Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在特定的时间间隔执行任务,而无需手动管理线程。在实际的开发中,这一特性常用于实现数据清理、统计计算、发送邮件等...

    springAop与spring定时器

    而Spring的定时任务功能,主要是由`@Scheduled`注解和`TaskScheduler`接口提供的,可以让我们轻松地创建计划任务,执行周期性的后台作业。 Spring AOP的核心概念包括切面(Aspect)、连接点(Join Point)、通知...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业调度器,可以让开发者轻松地实现任务的定时执行。它提供了强大的调度功能,可以满足复杂...

    SPRING 定时器的使用

    ### Spring 定时器的使用 #### 背景与需求 在开发应用程序时,并非所有操作都需要用户主动触发。有些任务需要系统自动执行,比如数据同步、定期备份等。例如,电力行业的集抄系统(一种自动收集电表读数的系统)...

    spring 定时器完整实例 demo

    下面是一个完整的Spring定时器示例: 1. **配置Spring配置类** 首先,我们需要创建一个配置类,启用定时任务支持,并提供一个`ThreadPoolTaskScheduler`实例,用于调度任务。 ```java @Configuration @...

    spring定时器

    以上内容详细介绍了Spring定时器的相关知识点,包括其基本概念、不同类型的定时器以及实际应用中的配置和实现方法。通过理解和掌握这些知识,开发者可以更高效地利用Spring框架来实现复杂的定时任务功能。

    spring定时器时间配置

    本文旨在深入解析Spring定时器的时间配置规则,并通过具体的代码示例进行演示。 #### Cron表达式的构成 Cron表达式由六个或七个空格分隔的时间元素组成,这些元素分别代表: 1. **秒** (0–59) 2. **分钟** (0–59...

    spring 定时器

    Spring定时器,全称为Spring...总的来说,Spring定时器提供了灵活、易用的任务调度功能,帮助开发者轻松管理各种周期性任务,提升了应用的自动化程度和效率。通过合理配置和使用,可以极大地简化项目中的定时任务处理。

    spring定时器实现源码

    Spring 框架是 Java 开发中的核心组件之一,它提供了丰富的功能,包括但不限于依赖注入、面向切面编程以及各种企业级服务。在本篇中,我们将深入探讨如何在 Spring 框架中实现定时任务功能,特别是使用 Spring MVC ...

    Spring 定时器

    在提供的压缩包文件"jopSpring"中,可能包含了使用Spring定时器功能的示例项目。加载该项目并运行,你将能看到如何在实际环境中配置和使用Spring的定时任务。 总的来说,Spring的定时器功能为开发者提供了方便、...

    Spring定时器quartz

    Spring定时器Quartz是Java应用中广泛使用的任务调度框架,它允许开发者定义并执行复杂的定时任务。这篇博客可能探讨了如何在Spring框架中集成Quartz,以实现灵活、可扩展的任务调度。 Quartz是一个开源的作业调度...

    spring定时器,定时调用任务配置

    本篇将详细介绍如何配置和使用Spring的定时器来定时调用任务。 首先,让我们了解Spring Task的核心组件。`TaskExecutor`接口用于异步执行任务,而`TaskScheduler`接口则用于调度定时任务。在这个场景中,我们将重点...

    spring 定时器的使用实例

    Spring提供了多种方式来实现定时任务,其中一种常用的方法是通过集成Quartz库来创建一个定时器。本实例将详细介绍如何在Spring中使用Quartz作为定时器。 首先,Quartz是一个功能强大的开源作业调度框架,它允许应用...

    SpringTimer定时器的功能

    总结,Spring定时器功能强大,通过TaskExecutor和TaskScheduler接口,配合`@Scheduled`注解,可以方便地创建和管理定时任务。它不仅可以处理简单的定时任务,还能通过自定义Trigger实现复杂的调度需求。在实际项目中...

    spring定时器3.0之前和3.0之后以及相应的项目实例

    要使用Spring的定时器功能,首先需要配置一个`TimerTask`实现,然后在Spring的XML配置文件中声明并配置定时任务,例如: ```xml &lt;!-- 这里可以设置Task的属性 --&gt; &lt;bean id="timerTaskScheduler" class="org....

    Spring定时器与动态代理实例

    在Spring中,定时任务的实现通常通过Spring Task模块,也就是我们常说的Spring定时器。这个实例将深入探讨如何利用Spring来创建和管理定时任务,并结合动态代理技术来增强功能。我们将从以下几个方面进行讲解: 1. ...

Global site tag (gtag.js) - Google Analytics