问题

我们有时需要执行一些定时任务(如数据批处理),比较常用的技术框架有Spring + Quartz中。无奈此方式有个问题:Spring Bean无法自动注入。

环境:Spring3.2.2 + Quartz1.6.1

Quartz配置:

<bean id="traderRiskReportJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="traderNoServerResource" />
<property name="targetMethod" value="queryTraderNo" />
<property name="concurrent" value="true" />
</bean>

service配置:

<bean name="traderNoServerResource" class="com.test.TraderNoServerResource" >
  <property name="threadPool" ref="threadPool"/>
</bean>

ThreadPool配置:

 <bean name="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<property name="corePoolSize" value="25"></property>
<property name="maxPoolSize" value="100"></property>
</bean>

出现的问题是:traderNoServerResource中的threadPool为null。

解决方法

    1. 成员变量添加注解@Autowired

    2. 然后在方法中(如例子中的queryTraderNo方法)添加以下代码,自动注入成员变量实现类

      SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

关于引发这个问题的原因,有待深入验证。说的比较多的是Quartz与SpringMVC的context不同,父context无法访问子context中的bean。

参考资料

http://stackoverflow.com/questions/6990767/inject-bean-reference-into-a-quartz-job-in-spring

解决Spring+Quartz无法自动注入bean问题的更多相关文章

  1. Spring 注解Autowired自动注入bean异常解决

      错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xx' is defined ...

  2. 五)Spring + Quartz 复杂业务的两个问题:获取Spring上下文 和 自动注入服务类

    配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

  3. Spring自动注入Bean

    通过@Autowired或@Resource来实现在Bean中自动注入的功能,但还要在配置文件中写Bean定义,下面我们将介绍如何注解Bean,从而从XML配置文件 中完全移除Bean定义的配置. 1 ...

  4. Spring在Thread中注入Bean无效的解决方式

    在Spring项目中,有时需要新开线程完成一些复杂任务,而线程中可能需要注入一些服务.而通过Spring注入来管理和使用服务是较为合理的方式.但是若直接在Thread子类中通过注解方式注入Bean是无 ...

  5. Spring quartz定时任务service注入问题

    今天想单元测试一下spring中的quartz定时任务,job类的大致结构和下面的SpringQtz1类相似,我的是实现的org.quartz.Job接口,到最后总是发现job类里注入的service ...

  6. Spring框架知识总结-注入Bean的各类异常

    近日整合sping和hibernate框架时遇到了一系列的异常,本次主要说明一下spring框架可能出现的异常及解决方案. 我们借助sping强大的bean容器管理机制,通过BeanFactory轻松 ...

  7. Spring的几种注入bean的方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式).   使用属性的se ...

  8. 分析解决 spring quartz 中出现的执行两次问题

    1. 问题描述 在开发询盘功能时,遇到一个需求,就是后台定时任务执行用电施工业务的工单下发. 使用的技术是 spring quartz,因为其他应用有先例,配置quartz 完成后,先写了一个 hel ...

  9. Spring中如何动态注入Bean实例教程

    前言 在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式,容易出现未被正确注入成功的情况. 本文将介绍一种在实际项目中基于动态的方式来提取Spring管理的Be ...

随机推荐

  1. Dynamic CRM 2013学习笔记(五)禁止修改、删除审批通过后的单据

    审批通过后的单据,一般要对其进行控制,不能修改,不能添加,删除等,下面分别介绍下如何实现: 一. 禁止修改: 1. 主表控制,如果页面上审批状态为审批中或审批通过,就把整个页面都disable掉 1: ...

  2. 用puthivestreaming把hdfs里的数据流到hive表

    全景图:   1. 创建hive表 CREATE TABLE IF NOT EXISTS newsinfo.test( name STRING ) CLUSTERED BY (name)INTO 3 ...

  3. 大熊君说说JS与设计模式之------单例模式Singleton()

    一,总体概要 1,笔者浅谈 顾名思义单例模式并不难理解,是产生一个类的唯一实例,在我们实际开发中也会使用到这种模式,它属于创建模式的一种,基于JS语言本身的语法特征, 对象直接量“{}”,也可以作为单 ...

  4. 作业七:团队项目——Alpha版本冲刺阶段-06

    昨天进展:代码编写. 今天安排:代码编写.

  5. [游戏模版11] Win32 动画 时间消息

    >_<:This time we will study a new way to operate your picture.That is running your picture by ...

  6. dpkg 被中断,您必须手工运行 sudo dpkg -configure -a 解决

    E: dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题. E: dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此 ...

  7. 看2015年TFC游戏大会,云计算何以唱主角

    日前,第10界TFC游戏大会浩浩荡荡地在北京国际会议中心成功举办了.与往届不同的是,这一次TFC的金苹果奖被四家云计算公司夺走,它们分别是金山云.阿里云.腾讯云和首都在线.四家云计算公司夺走了游戏大会 ...

  8. 详解Bootstrap面板组件

    面板组件主要作用是用来处理一些其他组件无法完成的功能,在不同的版本中具有不同的源码: LESS:panels.less SASS:_panels.scss 基础面板非常简单,就是一个div容器中运用了 ...

  9. JavaScript中如何中断forEach循环

    先来看下forEach的实现 // Production steps of ECMA-262, Edition 5, 15.4.4.18// Reference: http://es5.github. ...

  10. 解决VS2010中在项目上右键鼠标,无“添加STS引用”菜单的问题

    解决方法:将Windows Identity Foundation SDK文件夹C:\Program Files (x86)\Windows Identity Foundation SDK\v3.5\ ...