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类了,
引入包:
说明:QuartzJobBean是spring自带的,把spring的jar包加入就行了,但是前两个包要去下了,呵呵,google吧。
当然要继承QuartzJobBean了,但是光extends不行,必须要重载他的executeInternal方法
好了,一个spring的时间调度完成了。
附:时间配置说明
sping定时器的时间配置十分强大,下面将介绍如何进行配置。
相关推荐
Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在应用程序中安排周期性任务的执行。这个功能基于Java的`java.util.concurrent.ScheduledExecutorService`,并通过Spring...
Java定时器和Spring定时器是Java开发中用于执行周期性任务的重要工具,它们在系统维护、数据同步、报告生成等场景中发挥着关键作用。本文将深入探讨这两个概念,以及如何在Spring框架中配置和使用定时器。 首先,...
首先,我们来看看使用Spring自带的定时任务功能。这主要依赖于`@EnableScheduling`和`@Scheduled`这两个注解。`@EnableScheduling`通常放在配置类上,用来开启调度任务的功能。而`@Scheduled`则可以标记在方法上,...
Spring提供了Spring Task模块来实现定时任务,也就是我们常说的Spring定时器。这个"spring定时器简单的demo"应该包含了一个使用Spring Task实现简单定时任务的例子。 首先,Spring Task的配置通常在`...
Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在特定的时间间隔执行任务,而无需手动管理线程。在实际的开发中,这一特性常用于实现数据清理、统计计算、发送邮件等...
而Spring的定时任务功能,主要是由`@Scheduled`注解和`TaskScheduler`接口提供的,可以让我们轻松地创建计划任务,执行周期性的后台作业。 Spring AOP的核心概念包括切面(Aspect)、连接点(Join Point)、通知...
在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业调度器,可以让开发者轻松地实现任务的定时执行。它提供了强大的调度功能,可以满足复杂...
### Spring 定时器的使用 #### 背景与需求 在开发应用程序时,并非所有操作都需要用户主动触发。有些任务需要系统自动执行,比如数据同步、定期备份等。例如,电力行业的集抄系统(一种自动收集电表读数的系统)...
下面是一个完整的Spring定时器示例: 1. **配置Spring配置类** 首先,我们需要创建一个配置类,启用定时任务支持,并提供一个`ThreadPoolTaskScheduler`实例,用于调度任务。 ```java @Configuration @...
以上内容详细介绍了Spring定时器的相关知识点,包括其基本概念、不同类型的定时器以及实际应用中的配置和实现方法。通过理解和掌握这些知识,开发者可以更高效地利用Spring框架来实现复杂的定时任务功能。
本文旨在深入解析Spring定时器的时间配置规则,并通过具体的代码示例进行演示。 #### Cron表达式的构成 Cron表达式由六个或七个空格分隔的时间元素组成,这些元素分别代表: 1. **秒** (0–59) 2. **分钟** (0–59...
Spring定时器,全称为Spring...总的来说,Spring定时器提供了灵活、易用的任务调度功能,帮助开发者轻松管理各种周期性任务,提升了应用的自动化程度和效率。通过合理配置和使用,可以极大地简化项目中的定时任务处理。
Spring 框架是 Java 开发中的核心组件之一,它提供了丰富的功能,包括但不限于依赖注入、面向切面编程以及各种企业级服务。在本篇中,我们将深入探讨如何在 Spring 框架中实现定时任务功能,特别是使用 Spring MVC ...
在提供的压缩包文件"jopSpring"中,可能包含了使用Spring定时器功能的示例项目。加载该项目并运行,你将能看到如何在实际环境中配置和使用Spring的定时任务。 总的来说,Spring的定时器功能为开发者提供了方便、...
Spring定时器Quartz是Java应用中广泛使用的任务调度框架,它允许开发者定义并执行复杂的定时任务。这篇博客可能探讨了如何在Spring框架中集成Quartz,以实现灵活、可扩展的任务调度。 Quartz是一个开源的作业调度...
本篇将详细介绍如何配置和使用Spring的定时器来定时调用任务。 首先,让我们了解Spring Task的核心组件。`TaskExecutor`接口用于异步执行任务,而`TaskScheduler`接口则用于调度定时任务。在这个场景中,我们将重点...
Spring提供了多种方式来实现定时任务,其中一种常用的方法是通过集成Quartz库来创建一个定时器。本实例将详细介绍如何在Spring中使用Quartz作为定时器。 首先,Quartz是一个功能强大的开源作业调度框架,它允许应用...
总结,Spring定时器功能强大,通过TaskExecutor和TaskScheduler接口,配合`@Scheduled`注解,可以方便地创建和管理定时任务。它不仅可以处理简单的定时任务,还能通过自定义Trigger实现复杂的调度需求。在实际项目中...
要使用Spring的定时器功能,首先需要配置一个`TimerTask`实现,然后在Spring的XML配置文件中声明并配置定时任务,例如: ```xml <!-- 这里可以设置Task的属性 --> <bean id="timerTaskScheduler" class="org....
在Spring中,定时任务的实现通常通过Spring Task模块,也就是我们常说的Spring定时器。这个实例将深入探讨如何利用Spring来创建和管理定时任务,并结合动态代理技术来增强功能。我们将从以下几个方面进行讲解: 1. ...