`

quartz的job中注入spring对象!(转帖)

阅读更多

转帖地址:http://blog.csdn.net/u012572955/article/details/51656270

一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类。

自定义一个类:

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. public class JobFactory extends AdaptableJobFactory {  
  2.       
  3.     @Autowired  
  4.     private AutowireCapableBeanFactory capableBeanFactory;  
  5.   
  6.     @Override  
  7.     protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {  
  8.         //调用父类的方法  
  9.         Object jobInstance = super.createJobInstance(bundle);  
  10.         //进行注入  
  11.         capableBeanFactory.autowireBean(jobInstance);  
  12.         return jobInstance;  
  13.     }  
  14.       
  15. }  

然后在spring中配置:

 

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <!-- 定时任务的factorybean,配置其他config -->  
  2.     <bean id="jobFactory" class="com.xx.job.JobFactory"></bean>  
  3.     <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  4.         <property name="jobFactory" ref="jobFactory"></property>  
  5.     </bean>  


这时候,我们在定义类继承job的时候,就可以使用autowired注入service对象了:

 

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. public class Test1Job implements Job {  
  2.     public final Logger log = Logger.getLogger(this.getClass());  
  3.       
  4.     @Autowired  
  5.     private JobTaskService jobTaskService;  
  6.       
  7.     public void execute(JobExecutionContext context) throws JobExecutionException {  
  8.         //更新上一次执行时间和下一次计划执行时间  
  9.         Date nextProcessTime = context.getNextFireTime();  
  10.         ScheduleJob job = (ScheduleJob) context.getJobDetail().getJobDataMap().get("scheduleJob");  
  11.         job.setNextProcessTime(nextProcessTime);  
  12.         jobTaskService.updateTaskByJobName(job);  
  13.           
  14.         //业务逻辑  
  15.         System.out.println("22222222222222222222:");  
  16.     }  
  17. }  
分享到:
评论

相关推荐

    Spring quartz Job依赖注入使用详解

    主要介绍了Spring quartz Job依赖注入使用详解的相关资料,Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入,需要的朋友可以参考下

    Quartz注入Spring的Bean

    3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...

    SpringQuartz的使用文档

    另外,Spring还提供了`MethodInvokingJobDetailFactoryBean`,它可以直接将Spring容器中的Bean的方法转换为Quartz任务,无需为Job创建单独的类。这对于那些希望直接利用现有业务服务进行调度的开发者来说非常方便。 ...

    spring和quartz的定时器的启动和停止例子

    本篇将深入探讨如何在Spring中启动和停止Quartz定时器。 首先,我们需要理解Spring和Quartz的基本概念。Spring是一个强大的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。而...

    关于spring中quartz的配置

    以下将详细介绍如何在Spring中配置Quartz以及相关知识点。 1. **引入依赖** 在开始配置之前,首先需要在项目的`pom.xml`或`build.gradle`文件中引入Quartz和Spring相关的依赖库。对于Maven项目,可以添加如下依赖...

    QuartZ.zipSpring+QuartZ集成 自定义注解!!!

    本文主要讨论的是如何在Spring应用中集成Quartz,并实现自定义注解来更便捷地定义和管理定时任务。首先,我们需要在项目中引入Quartz和Spring的相关依赖,通常通过Maven或Gradle来添加相应的库。 集成步骤如下: 1...

    quartz整合springbatch动态集群定时实现mysql参考

    Quartz与Spring的集成使得在Spring应用中管理任务变得更加容易,可以利用Spring的依赖注入和生命周期管理。 Spring Batch是一个用于处理大量数据的批处理框架。它提供了诸如事务管理、错误处理、读写器和处理器抽象...

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

    在Spring中,我们通常会通过`@Service`注解标记此类,并使用`@Autowired`注解注入所需的其他服务或DAO。服务类可能会有一个方法来启动或唤醒Quartz Job,这个方法可能会调用Quartz的`Scheduler`接口的相关方法。 接...

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

    Java_Spring与Quartz的整合

    在Java Spring中整合Quartz,可以利用Spring的管理能力来控制Quartz的作业和触发器,使得整个系统更加灵活和易于维护。以下将详细介绍如何进行Spring与Quartz的整合。 1. **集成步骤** - 添加依赖:首先,确保在...

    spring quartz 时间调用框架

    1. **JobDetail**: Spring中的`JobDetailBean`用于定义一个Job,它可以绑定到Spring的bean,使得Job可以利用Spring的依赖注入来获取服务。 2. **Trigger**: 使用`CronTriggerBean`或`SimpleTriggerBean`来定义触发...

    quartz和spring-quartz

    Quartz和Spring-Quartz是两个在Java世界...“spring-quartz-demo”可能是一个完整的示例项目,你可以通过运行它来深入理解Quartz在Spring中的应用。通过研究这些资源,你可以更全面地掌握Quartz和Spring-Quartz的用法。

    spring2与quartz在Web整合

    3. **整合过程**:整合 Spring 2 和 Quartz 需要在 Spring 配置文件中声明 Job 和 Trigger 的 Bean,并指定它们的关联。Spring 可以通过其自身的 JobFactory 来创建 Job 实例,使得 Job 可以利用 Spring 的 DI 功能...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...

    spring整合quartz两种方式以及spring自带定时任务使用

    Spring框架是Java应用开发中的一个核心组件,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)以及各种企业级服务。Quartz则是一个强大的、开源的作业调度框架,用于创建和执行作业,实现应用程序的定时任务...

    Quartz Job 中文文档 CHM格式

    在Quartz Job中,核心概念包括Job、Trigger、Scheduler和Calendar。Job代表一个具体的工作任务,你可以定义自己的Job类来实现特定的任务逻辑。Trigger则控制Job的执行时机,可以是简单触发器或cron触发器,分别按照...

    Spring_QuartZDemo

    【Spring_QuartZDemo】是一个使用Spring框架集成Quartz定时任务的示例项目,它展示了如何在Java应用中利用Spring和Quartz实现任务调度。Quartz是Java领域一款功能强大的开源作业调度库,能够帮助开发者创建、调度和...

    spring注解Quartz定时执行功能

    Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,与Quartz相结合,简化了定时任务的配置和管理。下面我们将深入探讨如何利用Spring注解实现Quartz定时执行功能。 首先,我们需要引入Quartz和Spring的...

    spring之定时任务实现(spring-task和quartz等不同方式)

    配置Quartz通常需要在Spring配置文件中声明`SchedulerFactoryBean`,并设置相关的bean。例如: ```xml &lt;bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;!-- 这里...

    quartz2.2.1 spring3.1.1

    例如,你可以创建一个`MyJob`类实现`org.quartz.Job`接口,然后在 Spring 配置文件中声明这个 Job 和相应的 Trigger: ```xml &lt;bean id="myJob" class="org.springframework.scheduling.quartz.JobDetailBean"&gt; ...

Global site tag (gtag.js) - Google Analytics