java2借助于java.util.Timer和java.util.TimerTask,这样两个类能够为应用提供简单定时器功能。
而Quartz是Open Source社区努力的结果,它能够提供任务调度服务,任何J2SE和J2EE应用都能够使用它,借助于Quartz,开发者能够完成各种复杂的任务调度。
Spring集成了上述两种任务调度服务的支持。
下面对Quartz的使用进行介绍:
创建一个java类:
package com.openv.spring; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class LogJobBean extends QuartzJobBean{ protected static final Log log=LogFactory.getLog(LogJobBean.class); private int timeout; public void setTimeout(int timeout){ log.info("setTimeout()........."); this.timeout=timeout; } @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { log.info("Creating LogJobBean()........."); } }
写入配置文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="logJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>com.openv.spring.LogJobBean</value> </property> <property name="jobDataAsMap"> <map> <entry key="timeout"> <value>10</value> </entry> </map> </property> </bean> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail"> <ref bean="logJob"/> </property> <property name="startDelay"> <value>5000</value> </property> <property name="repeatInterval"> <value>2000</value> </property> <property name="repeatCount"> <value>3</value> </property> </bean> <bean id="sfb" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref local="simpleTrigger"/> </list> </property> </bean> </beans>
使用测试类:
package com.openv.spring; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; /** * * @author weiliuhong * */ public class Main { protected static Log log=LogFactory.getLog(Main.class); /** * @param <Scheduler> * @param args */ public static void main(String[] args) { Resource resource=new ClassPathResource("appcontext.xml"); BeanFactory factory=new XmlBeanFactory(resource); Scheduler sfb=(Scheduler)factory.getBean("sfb"); try{ Thread.sleep(20000); }catch (InterruptedException e) { log.error(e.getMessage(),e); } try{ sfb.shutdown(); }catch(SchedulerException se){ log.error(se.getMessage(),se); } } }
这样就实现对timer的调用
相关推荐
在【标题】"Spring的定时任务开发及对Quartz和Timer支持"中,涉及到的是Spring在处理定时任务方面的特性,这在企业级应用中非常常见,用于执行一些周期性的后台任务,如数据同步、报表生成、清理任务等。 首先,...
首先,我们来看一下Spring对Quartz的支持。Spring通过`org.springframework.scheduling.quartz`包提供了一套完整的Quartz集成方案。Quartz的优点在于其强大、灵活和可扩展性。你可以定义复杂的调度规则,如按照特定...
对于`java.util.Timer`,Spring 提供了`org.springframework.scheduling.timer` 包,可以方便地通过Spring的bean配置来管理和调度Timer任务。而对于Quartz,Spring则提供了`org.springframework.scheduling.quartz` ...
Spring框架提供了对定时任务的强大支持,包括内置的`Spring Timer`和集成第三方的`Quartz Scheduler`。这两种方式都允许开发者灵活地安排和执行周期性任务。下面我们将深入探讨这两种任务调度器及其在Spring中的使用...
在Spring中,我们通常会通过`@Scheduled`注解配合`@EnableScheduling`来定义定时任务,但这并不支持精确到几点运行。为了实现这个功能,我们可以使用`Timer`和`TimerTask`,并结合Spring的`ApplicationContextAware`...
实际上,Spring还提供了更多的定时任务支持,比如`@Scheduled`注解,可以更直观地在方法上标注定时任务,以及`@Async`注解用于异步任务执行。 在实际项目中,定时任务可能涉及到数据库操作、服务调用等复杂逻辑,...
首先,Spring对定时任务的支持主要通过`org.springframework.scheduling`包中的接口和类实现。其中,`TaskScheduler`和`TaskExecutor`是两个核心接口,分别用于异步执行周期性任务和一次性任务。然而,如果需要更...
此外,Spring还支持任务集群和分布式调度,适用于大型企业级应用。 总的来说,`Timer`适用于简单的定时需求,而Spring的定时任务功能全面,适合复杂和多样的定时场景。在实际开发中,可以根据项目规模和需求选择...
在Spring中使用`Timer`,有两种主要的方法来创建和调度这些时间触发的事件任务: 1. **继承TimerTask创建任务** 这种方法与传统的Java `Timer`用法相似。你需要创建一个类,继承自`java.util.TimerTask`,并重写`...
Spring的定时任务支持回调,例如`beforeExecute`、`afterExecute`和`terminated`方法,可以实现对任务执行状态的监控和异常处理。 8. **源码解析**: 标签中的“源码”提示我们可以深入研究Spring的源代码,理解...
Spring框架提供了两种方式来处理定时任务:Java内置的`Timer`类和第三方库OpenSymphony的Quartz。下面将详细介绍这两种实现方式。 ### 1. Java `Timer` 类 Java `java.util.Timer` 类是Java标准库中的一个轻量级...
本篇文章将深入探讨Java中的三种主要时间调度实现:`Timer`、`TimerTask`、以及第三方库`Quartz`和`Spring`的定时任务功能。 ### 1. Java `Timer` 和 `TimerTask` `java.util.Timer` 类提供了一个调度任务的方法,...
此外,Spring还支持通过`@Scheduled`注解直接使用Cron表达式,例如: ```java @Scheduled(cron = "0 0/5 * * * ?") public void executeTaskWithCron() { // 执行你的任务代码 } ``` 定时任务的应用场景非常广泛...
这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。 UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、...
- **功能简介**:包含了 Spring 对 DAO 特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink 等 ORM 框架。 - **应用场景**:适用于需要使用 ORM 框架进行数据持久化的项目。 - **依赖关系**:依赖于 `spring-...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form标签 ...
这个jar文件包含Spring对DAO特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖 spring-dao.jar里的类,用这个包时你...
`spring-context-support.jar`包含了对异步任务和定时任务的支持,如使用 Quartz 或者 JDK 的 Timer。 8. **Spring Test**: `spring-test.jar`提供了单元测试和集成测试的支持,与JUnit或Mockito等测试框架结合...
这个jar文件包含Spring对DAO特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖 spring-dao.jar里的类,用这个包时...