`
yjhexy
  • 浏览: 332237 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

Quartz 学习第二课

阅读更多

根据官方文档上写的一些内容,因为发现文档写的不太详细:http://www.redsaga.com/spring_ref/2.0/html/scheduling.html

,所以自己尝试了下。记录了下来:

 

1,想要执行的任务实现了Quartz的接口,例如:

public class RepeatPartBuild implements StatefulJob {

    private int i;

    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("build " + (i++) + "次");
    }
}

 那么Spring里可以这样配置:

	<bean name="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass" value="com.yajun.template.service.RepeatPartBuild" />
	</bean>
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
		<!-- see the example of method invoking job above -->
		<property name="jobDetail" ref="jobDetail" />
		<!-- 10 seconds -->
		<property name="startDelay" value="1000" />
		<!-- repeat every 50 seconds -->
		<property name="repeatInterval" value="5000" />
	</bean>

	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="simpleTrigger" />
			</list>
		</property>
	</bean>

 主要注意到 用到了spring里面的这个类:

org.springframework.scheduling.quartz.JobDetailBean

来辅助我们使用Spring 来整合 Quartz调度。

这里的注意点:

com.yajun.template.service.RepeatPartBuild 这个类每5秒执行的时候都会是一个新的类。所以线程安全。

 

2,想要执行的任务是一个普通的POJO

例如对上述类增加了个build方法:

public class RepeatPartBuild {

    private int i;

    public void build() {
        System.out.println("build");
    }
}

 spring配置如下:

	<bean id="repeatPartBuild" class="com.yajun.template.service.RepeatPartBuild"></bean>

	<bean id="jobDetail"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="repeatPartBuild" />
		<property name="targetMethod" value="build" />
		<property name="concurrent" value="false" />
	</bean>

	<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
		<!-- see the example of method invoking job above -->
		<property name="jobDetail" ref="jobDetail" />
		<!-- 10 seconds -->
		<property name="startDelay" value="1000" />
		<!-- repeat every 50 seconds -->
		<property name="repeatInterval" value="5000" />
	</bean>

	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="simpleTrigger" />
			</list>
		</property>
	</bean>

 关键点在:

org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean

这个类有

targetMethod

可以指定要使用哪个方法。


这里值得注意的是文档上,可能是我没有理解,感觉没有写清楚以下这个类在用的时候控制不能并发的话只要配置

org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
<property name="concurrent" value="false" />

就可以了,至于

com.yajun.template.service.RepeatPartBuild

就完全没有必要继承 StateFul接口了。这个点感觉文档写得比较模糊,我自己测试证明了下。

分享到:
评论

相关推荐

    Quartz学习笔记

    这个学习笔记将深入探讨Quartz的核心概念、主要功能以及如何在实际项目中使用它。 首先,我们要理解Quartz的基本架构。Quartz的核心组件包括Scheduler、Job、Trigger和Calendar。Scheduler是调度器,负责管理所有的...

    spring quartz学习总结: cluster的配置和示例

    2. **Spring与Quartz的集成** - 使用`@Configuration`注解的类来配置Quartz,导入`SpringBeanJobFactory`以处理Spring Bean。 - 配置`SchedulerFactoryBean`,设置`autoStartup`为`true`以自动启动调度器。 - ...

    人物调度Quartz 学习

    2. **事务支持**:Quartz 支持与XAResources(XA事务)集成,可以参与到JTA(Java Transaction API)事务中。这使得在事务环境中调度任务成为可能,确保了数据的一致性。 3. **任务执行(Job Execution)**:任务...

    quartz 项目学习源码

    2. **Quartz 工作流程**: - 创建 JobDetail 对象,指定 Job 类和相关的数据。 - 创建 Trigger 对象,设置触发时间和策略。 - 将 JobDetail 和 Trigger 注册到 Scheduler。 - 启动 Scheduler,开始执行任务。 3...

    quartz教程 quartz学习手册 quartz帮助手册

    二、Quartz的核心概念 1. **Job**:工作,是你想要执行的任务实体,可以是一个无状态或有状态的对象。 2. **Trigger**:触发器,负责决定何时启动Job。它可以是简单的、重复的或者基于日历的。 3. **Scheduler**:...

    Quartz学习资料

    在"Quartz开发指南"中,你将深入学习如何配置Quartz,包括数据库存储、集群设置以及如何处理并发执行。此外,指南可能还会涵盖以下主题: 1. **持久化**: Quartz支持将Job和Trigger信息存储在数据库中,这有助于在...

    Quartz学习

    Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理能力。Quartz Job Scheduling ...通过深入学习Quartz提供的文档和示例,开发者可以充分利用这个工具来提升应用程序的自动化和智能化程度。

    Quartz中文教程学习

    Quartz中文教程学习资源对于初学者来说是非常有价值的,因为它可以帮助你快速理解这个强大的工具,并将其有效地应用到实际项目中。 首先,Quartz的核心概念包括作业(Job)、触发器(Trigger)和调度器(Scheduler...

    Quartz学习的eclipse项目的实例

    在这个"Quartz学习的eclipse项目的实例"中,我们将深入探讨如何在Eclipse开发环境中配置和使用Quartz来实现复杂的定时调度需求。 首先,让我们了解Quartz的基本概念。Quartz的核心组成部分包括Job(工作)、Trigger...

    Quartz深入浅出

    通过阅读《Quartz学习.doc》和《Quartz学习.ppt》,你可以更深入地了解Quartz的原理、配置、使用示例和最佳实践,进一步提升你在Web开发中的任务调度能力。文档中可能还会涵盖如何处理Job执行异常、如何设置Job依赖...

    quartz实例,quartz入门例子

    在MyEclipse 6.0.1环境下,你可以直接运行这个Spring整合Quartz的示例项目,以便深入学习Quartz的调度功能。 Quartz的核心概念包括: 1. **Job**:工作,它是实际要执行的任务,可以定义一个Java类实现`org.quartz....

    Quartz学习.doc

    #### 二、Quartz 的运行环境 - **嵌入式运行**:可以在任何 Java 应用程序中直接使用。 - **应用服务器中的实例化**:可在应用服务器或 Servlet 容器中部署,并支持参与 XA 事务。 - **独立运行**:可以通过 JVM 或 ...

    Quartz定时任务框架学习总结

    2. **Trigger**: Trigger定义了Job的执行时间规则。Quartz提供了多种Trigger类型,如SimpleTrigger(简单触发器)和CronTrigger(cron触发器)。SimpleTrigger允许你设置一个固定的延迟或间隔来执行Job;而...

    quartz学习ppt,document和示例代码

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。

    Quartz的学习

    2. 注册Job类:通过`org.quartz.Scheduler`的`scheduleJob()`方法,将Job实例和Trigger绑定在一起,告诉Quartz何时何地执行Job。 3. 配置Trigger:Trigger可以是SimpleTrigger(一次性或固定间隔执行)或...

    quartz quartz-1.8.6 dbTables 建表sql

    Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。它提供了丰富的API和灵活性,使得开发者可以方便地定义、安排和管理各种任务。版本1.8.6是Quartz的一个稳定版本,它包含了对数据库...

    Quartz

    #### 二、Quartz的应用场景 Quartz非常适用于需要执行定时任务的场景,例如: - **定期执行的任务**:如每天或每周的特定时间点执行的任务。 - **周期性任务**:例如每半小时执行一次的任务。 - **故障恢复机制**...

    Quartz学习文档

    Quartz 是一个强大的任务调度框架,它为Java开发者提供了一种高效、灵活的方式来安排和执行周期性的任务。Quartz 的核心概念包括调度器(Scheduler)、任务(Job)和触发器(Trigger),这些概念构建了一个完整的任务调度...

Global site tag (gtag.js) - Google Analytics