`
LiYunpeng
  • 浏览: 950890 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Quartz创建Job无法注入接口实例的问题

阅读更多
在使用Quartz的时候,遇到了一个问题困扰了好久

就是在执行Job的时候,发现父类封装的一些Dao方法无法使用,断点一执行到相应位置就结束了,并且不报任何错误

也算范低级错误了,后来才想到,Exception没有捕获的就不报任何错误
后来写了try/catch,发现原来是要注入的Dao,获取的对象都是空

才明白是没有注入接口实现

可是自己明明在Spring中定义了Job的Bean

----------------------
后来明白,在创建Job时,代码如下
JobDetail initJob = new JobDetail("initJob", "InitGroup",  
				InitJob.class);

这样写其实是通过反射的方式创建的Job类,并不是通过Spring来创建的,所以他不会注入父类中封装的Dao

具体的方法可以如下
		<!--定时器任务配置(开始)-->	 
	<!--配置JOB-->
<!--方法一-->
	<bean id="initJobDetail"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="initJob" />
		<property name="targetMethod" value="executeA" />
<!-- 		<property name="arguments" /> -->
	</bean>
<!--方法二-->
<!-- 	<bean name="initJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> -->
<!--         <property name="jobClass" value="com.xxx.services.InitJob" /> -->
<!--     </bean> -->

第一种方法就是通过Spring中Quartz的Factory工厂来创建Job的,这样就可以通过Spring注入接口实例了

第二种则是和使用Java代码的方式相同,指定class类,实际上还是Quartz内部通过反射来实现,并没有使用Spring注入
分享到:
评论

相关推荐

    ssm-springMVC-整合Quartz(解决了无法注入service问题)-项目示例

    2. **定义Job类**:创建一个实现了`org.quartz.Job`接口的类,这个类会包含实际的业务逻辑。在这里,我们可能会遇到无法注入Service的问题,因为Job不是由Spring管理的。 3. **解决注入问题**:有两种常见解决方案...

    Quartz注入Spring的Bean

    4. **JobFactory的自定义**:Quartz默认使用SimpleJobFactory来创建Job实例,但我们可以自定义一个继承自SpringBeanJobFactory的类,使得在创建Job实例时,Spring会自动处理依赖注入。 **Quartz注入Spring Bean的...

    spring的quartz使用实例

    Job是Quartz的核心接口,需要实现`org.quartz.Job`接口或其子接口`org.quartz.StatefulJob`。在Spring中,通常会使用`org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean`来包装一个带有@...

    quartz1.86+spring3.2测试实例

    在这个测试实例中,Spring负责处理依赖注入、事务管理、Bean的生命周期管理等核心功能,同时通过与Quartz的集成,扩展了其在定时任务领域的应用。 这个项目包含两个主要的目录:`src`和`WebRoot`。`src`目录通常...

    spring-quartz定时任务小实例

    3. **创建Job类**:在Spring-Quartz中,你需要创建一个实现了`org.springframework.scheduling.quartz.JobDetailBean`接口的类,该类代表了你要执行的任务。你可以在这个类中定义任务的具体逻辑。 4. **定义Trigger...

    quartz线程工程实例

    总结来说,"quartz线程工程实例"是一个关于如何在Java项目中使用Quartz框架来实现任务调度的实例,涵盖了从创建Scheduler、定义Job、设计Trigger,到Spring集成Quartz、动态调度、线程控制和持久化等一系列关键知识...

    Spring+Quartz定时任务学习文档+实例+jar包

    4. 实现Job接口:在实际的业务代码中,我们需要创建一个实现了`org.quartz.Job`接口的类,定义`execute(JobExecutionContext context)`方法,这个方法会在Trigger触发时被执行。 ```java public class MyJob ...

    利用spring的ApplicationContext在程序中唤醒quartz的job

    服务类可能会有一个方法来启动或唤醒Quartz Job,这个方法可能会调用Quartz的`Scheduler`接口的相关方法。 接下来,`TestQuartzTimer.java`可能是测试类,用于验证Quartz的配置和任务执行是否正常。在测试类中,...

    Spring + Quartz配置实例(转载)

    你需要创建实现了`org.quartz.Job`接口的类,定义具体的作业逻辑。然后,创建一个或多个`Trigger`,定义何时触发这个Job。触发器可以是SimpleTrigger(一次性执行)或CronTrigger(按照Cron表达式周期性执行)。 ``...

    spring+quartz+maven项目实例

    【标题】"Spring+Quartz+Maven项目实例"是一个基于Spring框架集成Quartz作业调度库的实战项目,采用Maven作为构建工具。这个实例旨在展示如何在Java应用程序中实现定时任务,支持两种运行模式,既可以直接以独立的...

    定时器quartz API文档

    10. **扩展性**:Quartz的灵活性使得它易于扩展,可以集成到Spring框架中,利用Spring的依赖注入特性管理Job和Trigger,进一步简化开发。 以上就是Quartz API的主要知识点,通过学习和理解这些内容,开发者可以充分...

    Spring Quatz 书-Quartz.Job.Scheduling.Framework.Building

    4. **并发和线程管理**:Quartz支持多线程执行,书中会讲解如何处理并发问题,例如避免多个实例同时执行同一作业,以及如何调整线程池大小以优化性能。 5. **日志和监控**:学习如何集成日志框架,以便记录作业执行...

    SpringQuartz的使用文档

    Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理上下文来创建和控制Quartz的相关组件,如`Trigger`和`JobDetail`...

    spring+quartz demo

    Job 类是执行实际任务的逻辑,需要实现 Quartz 的 `org.quartz.Job` 接口,并重写 `execute(JobExecutionContext context)` 方法。Spring 可以通过 AOP 将 Job 实例注入到 Spring 容器中,从而利用 Spring 的特性,...

    Quartz学习

    开发者需要自定义Job类,并实现`org.quartz.Job`接口,覆盖`execute`方法来编写实际的业务逻辑。 2. **Trigger**:触发器决定了Job何时运行。常见的Trigger类型有SimpleTrigger(简单触发器)和CronTrigger(cron...

    springboot与quartz集成的最简单实例

    3. **创建Job类**:定义一个实现了`org.quartz.Job`接口的类,这个类代表一个具体的定时任务。在这个类中,重写`execute(JobExecutionContext context)`方法来实现任务逻辑。 ```java import org.quartz.Job; ...

    quartz2.1.5 实例

    Quartz是一个开源的作业调度框架,它允许程序创建和管理定时任务。在版本2.1.5中,Quartz引入了一些重要的改进和调整,使得它更加稳定和灵活,适用于大型和复杂的项目。在这个实例中,我们将深入探讨Quartz 2.1.5的...

    quartz与spring

    3. 定义Job:创建Job类实现`org.quartz.Job`接口,定义具体要执行的任务逻辑。 4. 创建Trigger:定义Trigger来决定Job的执行时间,可以是SimpleTrigger(简单触发器)或CronTrigger(基于cron表达式的触发器)。 5. ...

    quartz和spring-quartz

    在提供的文件中,“quartz的入门.doc”可能是Quartz的基础教程,介绍如何创建和调度Job;“spring的quartz应用.txt”可能包含Spring-Quartz的具体使用示例和注意事项;“spring-quartz-demo”可能是一个完整的示例...

    Quartz学习资料

    Quartz的核心功能是创建、安排和执行Job(任务),这些Job可以是任何实现了`org.quartz.Job`接口的Java对象。Quartz通过Trigger来决定何时触发Job的执行。 在Quartz入门中,你需要了解以下几个关键概念: 1. **Job...

Global site tag (gtag.js) - Google Analytics