非web应用开发中,系统用Spring集成Quartz,也就是在Spring配置文件applicationContext.xml中配置Quartz,具体代码如下:
<!-- Quartz调度模块 -->
<bean id="callJobBean" class="iprai.quartz.CallJobBean" />
<bean id="callJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="callJobBean" />
</property>
<property name="targetMethod">
<value>executeInternal</value>
</property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="callJobDetail" />
</property>
<property name="cronExpression">
<value>0 0/5 * * * ?</value>
</property>
</bean>
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger" />
</list>
</property>
</bean>
当我的系统启动时,会读取并实例化applicationContext.xml文件中的其他bean,出现的问题就是读取一次配置文件并实例化一个与Quartz不相关的bean时,代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
RiddickMessage message = (RiddickMessage)ctx.getBean("message");
Quartz就会相应地被调用一次,之前读取了多少次applicationContext.xml文件,运行时就会在Quartz设定的时间点重复执行相同次数的代码,也就是执行上面配置文件中的callJobBean对应的类中的executeInternal方法相同的次数,而且是同一个时间点,相当于配置了有多个一模一样的Job了。具体还没弄清楚是Spring到底是怎么自动实例化Quartz的,因为我都没有在代码中显式地实例化schedulerFactory这个bean,也就是下面代码没有运行:
Resource resource = new ClassPathResource("applicationContext-CallJob.xml");
BeanFactory factory = new XmlBeanFactory(resource);
scheduler = (Scheduler) factory.getBean("schedulerFactory");
最后没办法,只得将applicationContext.xml文件中配置的Quartz代码移到另一个配置文件applicationContext-callJob.xml中,这样就避免了读取applicationContext.xml文件时自动实例化Quartz了。
分享到:
相关推荐
### Spring集成Quartz调度框架详解 #### 一、Quartz调度框架概述 Quartz是一个开源的、成熟的作业调度框架,其主要目标是在Java应用程序中提供简单而强大的作业调度能力。Quartz支持作业按时间间隔(如每天、每周...
下面将详细介绍如何使用Spring集成Quartz,以及解决定时任务重复执行的问题。 首先,让我们了解Spring如何配置Quartz。在Spring应用中添加Quartz支持,你需要在`pom.xml`或`build.gradle`文件中引入Quartz的依赖,...
**Spring Quartz时间调用框架详解** Spring Quartz是一个在Spring框架中集成的时间调度插件,它允许开发者方便地创建和管理定时任务。Quartz是Java领域的一款功能强大的作业调度库,而Spring通过其优秀的IoC...
二、Spring 集成 Quartz 1. 添加依赖:在 Maven 或 Gradle 项目中,需要引入 Spring 对 Quartz 的支持。添加相应的依赖库,例如: Maven: ```xml <groupId>org.springframework.boot <artifactId>spring-...
总结,Spring Boot集成Quartz定时器能够方便地创建和管理定时任务,同时利用Spring的依赖注入,使得Job可以灵活地调用其他服务或组件。这种方式使得我们的任务更加模块化和易于维护。在实际开发中,根据项目需求,...
Spring 和 Quartz2 是两个在 Java 开发中广泛使用的框架,它们在企业级应用中承担着重要的角色。Spring 是一个全面的、开源的应用框架,而 Quartz2 是一个强大的、开源的作业调度库,常用于实现定时任务。下面我们将...
Spring整合Quartz是一款常见的任务调度解决方案,它允许开发者在应用程序中安排定时任务的执行。Quartz是一个开源的作业调度框架,而Spring通过提供一个简洁的API使得与Quartz的集成变得简单。以下是对Spring整合...
2. **配置Quartz**:在Spring的配置文件(如applicationContext.xml)中,声明Quartz的相关bean,包括`SchedulerFactoryBean`,它是Quartz与Spring集成的关键: ```xml <bean id="schedulerFactoryBean" class="org....
Quartz与Spring的集成使得在Spring应用中管理任务变得更加容易,可以利用Spring的依赖注入和生命周期管理。 Spring Batch是一个用于处理大量数据的批处理框架。它提供了诸如事务管理、错误处理、读写器和处理器抽象...
标题 "spring quartz 集群模式" 涉及到的是Spring框架与Quartz调度器在集群环境下的集成和配置。Quartz是一个开源任务调度框架,而Spring则提供了与Quartz的无缝集成,使得在Java应用中管理和执行定时任务变得更加...
【Spring Quartz集成】是将强大的Quartz定时任务调度框架与Spring框架进行整合,以实现更加灵活、方便的定时任务管理。Quartz是一个开源的作业调度框架,能够按预定的时间执行任务,而Spring作为企业级应用的Java...
在上面的例子中,我们定义了一个JobDetail,它的目标是调用`SomeService`的`executeTask`方法,然后设置了一个CronTrigger来决定何时触发这个Job。最后,我们创建了一个SchedulerFactoryBean来启动Quartz的调度器。 ...
Spring Quartz 是一个集成Quartz定时任务框架与Spring的开源项目,它使得在Spring应用中配置和管理定时任务变得更加便捷。Quartz是Java平台上的一个强大、完全可移植的作业调度库,可以用来创建复杂的调度任务,而...
在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...
集成Quartz到Spring的过程中,主要涉及以下步骤: 1. 添加依赖:确保项目中引入了Spring和Quartz的相关库,包括`spring-context-support`和`quartz`。 2. 配置Scheduler:在Spring的配置文件中,使用`...
Spring提供了一种集成Quartz的方式,使得我们可以方便地在Spring应用中管理和执行定时任务。本篇将深入探讨如何在Spring中启动和停止Quartz定时器。 首先,我们需要理解Spring和Quartz的基本概念。Spring是一个强大...
总的来说,Spring集成Quartz提供了一个强大且灵活的任务调度解决方案,使得开发者可以专注于任务的业务逻辑,而无需关心底层的调度细节。这极大地提高了开发效率,也使得应用的定时任务更加健壮和可控。
Quartz 可以与 Spring 框架集成,以实现任务的定时执行。 Spring 中的 Quartz 配置 在 Spring 中,Quartz 的配置主要通过 XML 文件来实现。我们可以在 Spring 的配置文件中定义 Quartz 的 bean,以便实现任务的...
Quartz是开源的,可扩展的,且与Spring框架完美集成,为应用提供了灵活且可靠的定时任务管理能力。在这个"spring-quartz简单实例"中,我们将探讨如何在Spring环境下配置和使用Quartz。 首先,我们需要引入Quartz和...
《Spring集成Quartz实战解析》 在Java世界中,任务调度是常见的需求,例如定时执行数据清理、发送邮件等操作。Spring框架以其强大的整合能力,为开发者提供了与各种任务调度库集成的方案,其中Quartz是一款广泛应用...