`
wengcang
  • 浏览: 14821 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring 定时器配置实例

阅读更多

        cto有如下需求:

 

        要求各team leader(每人负责网站的一个行业栏目)将各项目部的数据从后台管理查询汇总并使用excel整理以附件形式发送至cto(发送时间不限),貌似数据量很大,自己统计要疯,于是乎,写定时器执行无疑是个好选择,那我的需求就很简单了,

 

        首先,由于是门户网站,数据量访问较大,所以只能选择深夜“悄悄地”。。。。。

    

         1、每天凌晨3点钟启动“数据提取”timer,其负责 :

               1) 分类汇总数据;

               2) 持久化到数据库;

 

         2、每天凌晨4点钟启动“发送邮件”timer,主要用来将数据库里汇总好的相应数据提取并e-mail给cto

 

timer关键代码:

         我选择使用annotation方式,代码简单轻巧,

         1) 在spring配置文件的xmlns和xsi:schemaLocation声明处分别添加

           

task="http://www.springframework.org/schema/task"
和
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd

       

          2) 开启task任务扫描注解

 

        

<task:annotation-driven/>

 

         3) 开启annotation,并配置扫描位置

 

<context:annotation-config />
<context:component-scan base-package="com.sina" />

 

         4) 接口:SpringTimerService

 

                /**
		 * spring 定时器接口
		 * @author Jar chang
		 */
		public interface SpringTimerService {
			/**
			 * 数据提取定时器
			 */
			public void runDataCollectionTimer();
			
			/**
			 * 发送邮件定时器
			 */
			public void runSendStatisticsEmailTimer();
			
		}

 

              5) service实现

 

    

                  @Component
		  public class SpringTimerServiceImpl implements SpringTimerService{
			
			@Resource
			private SpringTimerDao springTimerDaoImpl;
			
			@Override
			@Scheduled(cron="0 0 3 * * ?")
			//此处配置定时器具体的生效时间,关于cron表达式很简单:请百度
			public void runDataCollectionTimer() {
				springTimerDaoImpl.runCollection();
				//。。。。代码略
			}

			@Override
			@Scheduled(cron="0 0 4 * * ?")
			public void runSendStatisticsEmailTimer() {
				springTimerDaoImpl.runSendEmail();
				//。。。。代码略
			}
		}

 

 

              6) dao层是具体的从数据库取数据以及发送邮件的代码,网上一大堆,就不多做声明了#11

 

     需要注意的地方:


        1) 定时器任务方法不能有返回值


        2) spring的@Scheduled注解必须写在实现类上


        3) 定时任务不能启动请检查spring配置文件中的default-lazy-init="true",将其修改为false,因为默认懒

 

加载的情况定时器不会执行

分享到:
评论

相关推荐

    spring定时器简单实例

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

    spring 定时器完整实例 demo

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

    spring 定时器的使用实例

    本实例将详细介绍如何在Spring中使用Quartz作为定时器。 首先,Quartz是一个功能强大的开源作业调度框架,它允许应用程序定义和调度任务,以便在特定时间执行。Spring与Quartz的集成使得在Spring应用中管理定时任务...

    Spring定时器的实例.pdf

    《Spring定时器的实例》 在Java开发中,Spring框架提供了强大的定时任务处理能力,使得开发者可以方便地实现定时任务的调度。本文将深入解析一个基于Spring的定时器实例,名为ScheduledTimer,以及相关的类和方法,...

    spring定时器实例

    "spring定时器实例"应该包含一个实际应用这些概念的代码示例,比如如何配置`ThreadPoolTaskScheduler`,如何编写并调度`@Scheduled`方法,以及可能的Cron表达式的使用。学习和理解这些知识点对于任何需要在Spring...

    Spring定时器的实例.docx

    【Spring定时器的实例】 在Java开发中,Spring框架提供了定时任务的支持,使得开发者能够方便地实现周期性任务。在给定的文件中,我们看到一个名为`ScheduledTimer`的类,它展示了如何利用Spring来执行定时查询。...

    Spring定时器实例(Java的Timer类和OpenSymphony的Quartz)

    Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。

    Spring定时器的实例.doc

    1. **Spring定时器**: Spring提供了两种主要的方式来实现定时任务:`@Scheduled`注解和`TaskScheduler`接口。在这个例子中,可能使用了`@Scheduled`注解来声明一个定时任务方法,或者通过配置`TaskScheduler`来...

    springmvc+hibernate+定时器配置实例

    在IT行业中,SpringMVC、Hibernate和定时器是三个非常重要的技术组件,...以上就是SpringMVC、Hibernate和定时器整合的基本概念和配置实例。这样的组合在实际开发中非常常见,可以方便地构建出高效、可维护的Web应用。

    Spring定时器与动态代理实例

    总结,本实例通过Spring定时器展示了如何在Spring环境中实现定时任务,同时结合动态代理技术,增强了任务的灵活性和可扩展性。对于日常开发来说,掌握这些技术可以帮助我们更高效地管理后台服务,提升系统的自动化...

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

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

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

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

    spring 定时器

    下面将详细阐述Spring定时器的工作原理、配置方法以及使用场景。 1. **工作原理**: Spring定时器基于`java.util.concurrent.ScheduledExecutorService`接口,它是一个线程池服务,可以用来安排在未来某个时间点...

    Spring定时器quartz

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

    spring定时器配置

    Spring定时器,通常指的是Spring框架中的任务调度模块,它基于Quartz库进行封装,使得在Spring应用中配置和管理定时任务变得更为简便。本篇文章将深入探讨Spring如何配置定时器,以及如何使用它来执行定期任务。 ...

    spring定时器/触发器的小实例

    总结来说,`spring定时器/触发器的小实例`通过结合Spring的`TaskScheduler`接口和Quartz库,提供了一种灵活的方式来安排和执行定时任务。这个实例不仅演示了如何创建和配置定时任务,还展示了如何在实际开发环境中...

    web spring 定时器

    - **Spring内置定时器**适用于简单任务,易于配置,集成度高,无需额外引入库。 - **Quartz**适合复杂场景,如并发调度、依赖管理、恢复策略等,但配置相对繁琐。 总结来说,Spring为Web应用程序提供了强大的定时...

    spring定时器启动两次原因及解决

    标题中的“spring定时器启动两次原因及解决”指的是在Spring框架中使用了定时任务功能,如Spring Boot的`@Scheduled`注解或者Spring Task模块,但遇到了定时任务被触发执行了两次的问题。这种情况可能是由于配置不当...

    Spring中配置定时器详解.doc

    本文主要探讨基于`ScheduledTimerTask`的定时器配置方法。 ### 二、配置定时器 在Spring中配置定时器,首先需要在`applicationContext.xml`配置文件中定义定时任务相关的Bean。具体步骤如下: 1. **定义`...

Global site tag (gtag.js) - Google Analytics