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 Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在特定的时间间隔执行任务,而无需手动管理线程。在实际的开发中,这一特性常用于实现数据清理、统计计算、发送邮件等...
下面是一个完整的Spring定时器示例: 1. **配置Spring配置类** 首先,我们需要创建一个配置类,启用定时任务支持,并提供一个`ThreadPoolTaskScheduler`实例,用于调度任务。 ```java @Configuration @...
本实例将详细介绍如何在Spring中使用Quartz作为定时器。 首先,Quartz是一个功能强大的开源作业调度框架,它允许应用程序定义和调度任务,以便在特定时间执行。Spring与Quartz的集成使得在Spring应用中管理定时任务...
《Spring定时器的实例》 在Java开发中,Spring框架提供了强大的定时任务处理能力,使得开发者可以方便地实现定时任务的调度。本文将深入解析一个基于Spring的定时器实例,名为ScheduledTimer,以及相关的类和方法,...
"spring定时器实例"应该包含一个实际应用这些概念的代码示例,比如如何配置`ThreadPoolTaskScheduler`,如何编写并调度`@Scheduled`方法,以及可能的Cron表达式的使用。学习和理解这些知识点对于任何需要在Spring...
【Spring定时器的实例】 在Java开发中,Spring框架提供了定时任务的支持,使得开发者能够方便地实现周期性任务。在给定的文件中,我们看到一个名为`ScheduledTimer`的类,它展示了如何利用Spring来执行定时查询。...
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。
1. **Spring定时器**: Spring提供了两种主要的方式来实现定时任务:`@Scheduled`注解和`TaskScheduler`接口。在这个例子中,可能使用了`@Scheduled`注解来声明一个定时任务方法,或者通过配置`TaskScheduler`来...
在IT行业中,SpringMVC、Hibernate和定时器是三个非常重要的技术组件,...以上就是SpringMVC、Hibernate和定时器整合的基本概念和配置实例。这样的组合在实际开发中非常常见,可以方便地构建出高效、可维护的Web应用。
总结,本实例通过Spring定时器展示了如何在Spring环境中实现定时任务,同时结合动态代理技术,增强了任务的灵活性和可扩展性。对于日常开发来说,掌握这些技术可以帮助我们更高效地管理后台服务,提升系统的自动化...
要使用Spring的定时器功能,首先需要配置一个`TimerTask`实现,然后在Spring的XML配置文件中声明并配置定时任务,例如: ```xml <!-- 这里可以设置Task的属性 --> <bean id="timerTaskScheduler" class="org....
本篇将详细介绍如何配置和使用Spring的定时器来定时调用任务。 首先,让我们了解Spring Task的核心组件。`TaskExecutor`接口用于异步执行任务,而`TaskScheduler`接口则用于调度定时任务。在这个场景中,我们将重点...
下面将详细阐述Spring定时器的工作原理、配置方法以及使用场景。 1. **工作原理**: Spring定时器基于`java.util.concurrent.ScheduledExecutorService`接口,它是一个线程池服务,可以用来安排在未来某个时间点...
Spring定时器Quartz是Java应用中广泛使用的任务调度框架,它允许开发者定义并执行复杂的定时任务。这篇博客可能探讨了如何在Spring框架中集成Quartz,以实现灵活、可扩展的任务调度。 Quartz是一个开源的作业调度...
Spring定时器,通常指的是Spring框架中的任务调度模块,它基于Quartz库进行封装,使得在Spring应用中配置和管理定时任务变得更为简便。本篇文章将深入探讨Spring如何配置定时器,以及如何使用它来执行定期任务。 ...
总结来说,`spring定时器/触发器的小实例`通过结合Spring的`TaskScheduler`接口和Quartz库,提供了一种灵活的方式来安排和执行定时任务。这个实例不仅演示了如何创建和配置定时任务,还展示了如何在实际开发环境中...
- **Spring内置定时器**适用于简单任务,易于配置,集成度高,无需额外引入库。 - **Quartz**适合复杂场景,如并发调度、依赖管理、恢复策略等,但配置相对繁琐。 总结来说,Spring为Web应用程序提供了强大的定时...
标题中的“spring定时器启动两次原因及解决”指的是在Spring框架中使用了定时任务功能,如Spring Boot的`@Scheduled`注解或者Spring Task模块,但遇到了定时任务被触发执行了两次的问题。这种情况可能是由于配置不当...
本文主要探讨基于`ScheduledTimerTask`的定时器配置方法。 ### 二、配置定时器 在Spring中配置定时器,首先需要在`applicationContext.xml`配置文件中定义定时任务相关的Bean。具体步骤如下: 1. **定义`...