假设有一个QuartzTasks类,其有一个print方法,现需要在Spring中使用Quartz对其进行定时调度。我们先配置一个JobDetail,采用Spring提供的MethodInvokingJobDetailFactoryBean,其可以指定需要调度的对象及其方法名称。配置如下:
<bean id="quartzTasks" class="com.elim.learn.spring.task.QuartzTasks"/>
<bean
id="quartzTasksJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
p:targetObject-ref="quartzTasks"
p:targetMethod="print"/>
定义JobDetail时如果不希望该Job可以并发调度,即前一次还没有调度完成时不希望下一次调度开始,则可以指定concurrent属性为false。默认是可以并发调度的。
<bean id="quartzTasksJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" p:targetObject-ref="quartzTasks" p:targetMethod="print" P:concurrent="false"/>
然后是定义Trigger,可以选择使用Spring提供的org.springframework.scheduling.quartz.CronTriggerFactoryBean
或org.springframework.scheduling.quartz.SimpleTriggerFactoryBean
。CronTriggerFactoryBean用来根据cron表达式定义调度时机。下面的配置就配置了每分钟触发一次quartzTasksJobDetail的调度。
<bean
id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
p:jobDetail-ref="quartzTasksJobDetail"
p:cronExpression="0 * * * * ?"/>
SimpleTriggerFactoryBean用来定义每隔多长时间调度一次,可以指定初始延迟时间,总的调度次数。下面的配置就定义了每隔3秒调度一次quartzTasksJobDetail,初次调度延迟2秒进行,然后总共重复5次,即一共会进行6次调度。
<bean
id="simpleTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
p:jobDetail-ref="quartzTasksJobDetail"
p:startDelay="2000"
p:repeatInterval="3000"
p:repeatCount="5"/>
有了Trigger之后需要通过Scheduler进行注册,下面的代码就定义了一个Scheduler,同时注册了上面定义的两个Trigger。这样当Spring容器启动以后注册的Trigger在达到了调度时机时就会自动进行调度了。
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
通过SchedulerFactoryBean也可以指定一些其它信息,比如下面的代码就指定了Job调度时使用的TaskExecutor。更多信息的指定可以参考对应的API文档。
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
p:taskExecutor-ref="myExecutor">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
(注:本文是基于Spring4.1.0所写)
相关推荐
在"Quartz Spring整合——附带webservice Demo"的项目中,我们可以看到如何将这两个强大的工具结合在一起。这个Demo可能包含了一个使用Quartz调度器来触发Web服务调用的示例。Web服务(Webservice)是一种基于标准的...
刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
本文将深入探讨如何在Spring环境中整合Quartz,主要关注两种方式:JobDetailBean和MethodInvokingJobDetailFactoryBean。这两种方式都能帮助我们在Spring应用中实现定时任务,但它们的使用方法和适用场景略有不同。 ...
标题 "j2EE Spring Quartz" 暗示了我们即将探讨的是Java企业级应用开发中的一个关键组件——Spring框架与Quartz作业调度器的整合。Quartz是一个强大的、开源的作业调度框架,常用于在Java应用程序中安排任务执行。而...
总的来说,"spring-support.jar"为Spring和Quartz的整合提供了便利,使得开发者能够充分利用Spring的IoC和AOP特性来管理Quartz作业,极大地简化了定时任务的实现。在实际项目中,通过熟练掌握`QuartzJobBean`的使用...
《Spring技术手册Demo2:远程、邮件与任务调度——RMI、Quartz和Mail整合》 在Spring框架中,远程调用、定时任务和邮件发送是企业级应用中常见的功能需求。Spring提供了丰富的支持,使得开发者能够轻松地实现这些...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,让你可以快速地创建一个独立运行的、生产级别的基于 Spring 的应用。 在Eclipse 上搭建 SpringBoot 项目首先需要安装 Spring ...
12.1 Spring整合ORM技术 12.2 在Spring中使用Hibernate 12.2.1 配置SessionFactory 12.2.2 使用HibernateTemplate 12.2.3 处理LOB类型数据 12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 ...
本手册主要涵盖了Spring框架的两个主要版本——Spring 2.x和Spring 3.x,由FengGe精心整理,旨在帮助开发者快速查找和理解Spring的核心概念与使用方法。 一、IoC(Inversion of Control)容器 Spring的核心是IoC...
【Spring整合WebSocket应用示例(下)】 在Spring框架中集成WebSocket技术,可以构建实时通信的应用,例如在线聊天、实时推送通知等。本篇将继续上文的讲解,着重介绍Spring WebSocket的核心业务实现类——`...
12.1 Spring整合ORM技术 12.2 在Spring中使用Hibernate 12.2.1 配置SessionFactory 12.2.2 使用HibernateTemplate 12.2.3 处理LOB类型数据 12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 ...
2. **Spring整合Quartz**:Spring提供了对Quartz的集成支持,可以通过Spring的XML配置或注解方式来声明和管理Quartz的Job和Trigger,简化了定时任务的创建和管理。 3. **Quartz配置**:学习Quartz的配置,包括...
SSM框架是Java Web开发中常用的三大组件——Spring、SpringMVC和Mybatis的集成,它们共同构建了一个灵活且强大的后端服务架构。这五个思维导图分别详细描绘了SSM框架的各个组成部分以及它们之间的关系,对于理解和...
项目实战阶段涉及多个技术,如ElementUI用于前端界面,Quartz进行定时任务,Apache POI处理Excel,七牛云存储服务,Spring Security框架进行安全控制,ECharts用于数据可视化,阿里云短信服务,以及Redis缓存的使用...