二.Spring的定时调度
Spring的定时调度有两种:
1. 使用OpenSymphony Quartz 调度器
2. 使用JDK Timer支持类
1. 使用OpenSymphony Quartz 调度器
Quartz调度器有两种:1. 使用JobDetailBean
2. 使用MethodInvokingJobDetailFactoryBean
把两种全写在一起:
例子:
1) 配置QuartzTimer.xml
WEB-INF/conf/QuartzTimer.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- JobDetail 对象保存运行一个任务所需的全部信息 -->
<bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="example.ExampleJob" />
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="5" />
</map>
</property>
</bean>
<!-- 通常情况下,你只需要调用特定对象上的一个方法即可实现任务调度 -->
<bean name="exampleBusinessObject" class="example.ExampleBusinessObject" >
<property name="simplesender" ref="simplesender" />
<property name="ordermanager" ref="ordermanager" />
</bean>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- MethodInvokingJobDetailFactoryBean引的方法为方法调用工作详细工厂BEAN -->
<property name="targetObject" ref="exampleBusinessObject" /><!-- 指定要执行的对象 -->
<property name="targetMethod" value="doIt" /> <!-- 指定要执行对象中的方法 -->
</bean>
<!-- 调度这些jobs,需要使用triggers ,Spring提供两个子类triggers,分别为CronTriggerBean和SimpleTriggerBean-->
<!—simpleTrigger 设置隔多久就重复执行-->
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- see the example of method invoking job above -->
<property name="jobDetail" ref="jobDetail" />
<!-- 初始化时间为10秒 -->
<property name="startDelay" value="10000" />
<!-- 每50秒重复一次 -->
<property name="repeatInterval" value="20000" />
</bean>
<!—cronTrigger 设置某天某时某秒起动-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="exampleJob" />
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="0 31 11 * * ?" />
</bean>
<!-- 我们创建了两个triggers,其中一个开始延迟10秒以后每50秒运行一次,另一个每天早上6点钟运行。
我们需要创建一个SchedulerFactoryBean来最终实现一切 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="simpleTrigger" />
</list>
</property>
</bean>
</beans>
2)配置web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!--WEB-INF/dataAccessContext.xml,-->
WEB-INF/conf/applicationContext.xml,
WEB-INF/conf/MailSender.xml,
WEB-INF/conf/QuartzTimer.xml
</param-value>
</context-param>
分享到:
相关推荐
在这个项目中,结合Quartz和Spring Batch,开发者可能已经创建了一个系统,可以在集群环境中自动调度和执行Spring Batch作业。MySQL被用作Quartz的JobStore和Spring Batch的持久化存储,存储作业状态、调度信息以及...
本文将深入探讨Spring中的定时任务,并结合Eclipse和Maven项目环境进行讲解。 首先,Spring提供了两种主要的定时任务实现:`Spring Task`(也称为Spring自己的任务调度器)和`Quartz Scheduler`。`Spring Task`相对...
Spring 整合 Quartz 定时发送邮件是一种常见的任务调度场景,用于定期执行如发送通知、报告等操作。Quartz 是一个开源的作业调度框架,它允许开发者创建、调度和管理任务。而Spring作为一个强大的企业级应用开发框架...
Spring的任务调度模块使得开发者能够在应用中轻松地定义和执行定时任务,极大地提高了代码的可维护性和灵活性。 标题"Spring 任务调度"涵盖了Spring框架中的两个主要组件:Spring Task和Quartz Scheduler。Spring ...
Quartz和SpringBatch是两种在Java开发中广泛使用的框架,Quartz用于任务调度,而SpringBatch则用于批量处理。在大型分布式系统中,结合这两者可以实现强大的定时任务集群功能,尤其是在需要对大量数据进行定时处理的...
在IT行业中,定时任务是常见的一种需求,它允许程序在特定时间或按照一定周期自动执行某些操作,比如发送邮件、进行数据统计、更新系统状态、推送消息、开启活动或创建增量索引等。目前,主要有两种方式可以实现定时...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...
`spring-context-support.jar`是Spring框架对Quartz和Commons JCR等第三方调度库的支持,同时也包含Spring自己的`TaskExecutor`和`TaskScheduler`接口,用于实现异步任务和定时任务。 1. **Spring TaskExecutor**: ...
在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring框架的`@Scheduled`注解以及Quartz库。 1. **Java内置的`java.util.Timer`和`TimerTask`**: - `Timer`类用于创建一...
ss-deamonSpring和qz定时调度任务的整合系统有很多个mysql和mongo库,用户中心,订单中心,库存中心。因为没有统一的抽象业务层,所以定时任务需要直接连接这些不同的数据库。同时考虑到后期会有很多不同的定时任务...
在Java开发中,Spring框架和Quartz库的整合是实现定时任务的一种常见方式。Spring提供了灵活的定时任务支持,而Quartz则是一个强大的作业调度框架,可以用来安排复杂的任务执行计划。下面我们将深入探讨如何在Spring...
Spring通过提供一个抽象层,简化了Quartz的配置和使用,使得任务调度变得更加简单和灵活。 1. **Spring集成Quartz**:Spring为Quartz提供了声明式配置,可以在Spring的XML配置文件中定义Job(任务)和Trigger...
在Ibatis Spring Struts整合中,Spring通常作为核心框架,管理其他组件的生命周期,包括Struts的Action和Ibatis的SqlSession。开发者可以利用Spring的AOP功能来管理事务,确保在多条数据库操作之间保持一致性。...
整合Spring和Struts是Web开发中常见的需求,这两者都是Java Web开发的重要框架。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,以及对其他框架的良好集成,而Struts则是一个专注于MVC模式的轻量级框架...
在Spring 2.x版本中,Spring已经提供了对`Timer`和Quartz的集成支持,通过`FactoryBean`进行配置,还包含线程池调度的抽象类,隐藏了底层实现细节。然而,Spring 3.0引入了新的【新特性】,包括声明式模型验证、全面...
1. **邮件服务**:Spring提供了一种抽象层来处理邮件发送,允许开发者配置SMTP服务器并轻松地发送邮件。 2. **定时任务**:通过`org.springframework.scheduling`包,Spring支持基于 cron 表达式的任务调度,可以...
Spring 通过提供一系列的抽象层来简化 Quartz 的使用。 #### 二、Spring 普通定时任务 ##### 2.1 基本概念 Spring 定时任务主要依赖于 Quartz 的 Job 和 Trigger 两个核心组件。其中,Job 代表了需要执行的任务,...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而当这三者结合在一起时,可以构建出高效、模块化的应用程序。以下是对这三个框架及其整合的详细解释。 **Struts2** 是一个基于...