专栏首页架构师小跟班Spring消息监听器无法注入bean的问题

Spring消息监听器无法注入bean的问题

问题描述:

在activemq的监听器中,通过注解@Autowired或@Resource注入bean时,获取到的bean为null。调用该bean的方法时会报空指针异常。

问题原因:

当调用bean内方法时,spring容器中还没有完成对注解bean的扫描,dispatcher.xml中配置的注解bean的优先级没有框架中的contextListener的优先级高,所以contextListener初始化的时候根据@Autowired扫描,肯定是null的。

解决办法:

在web.xml文件中增加一个监听器类,该类实现ServletContextListener,ApplicationContextAware这两个接口。

<listener>

    <listener-class>com.activemq.common.InitComponent</listener-class>

</listener>

当容器启动的时候,会执行该类中的contextInitialized(ServletContextEvent servletContextEvent)方法。

我们要做的,就是在该类中新增获取bean的方法。

此时,获取bean的方式就变为:

ConsumerDao consumerDao = InitComponent.getBean("ConsumerDao");

consumerDao.saveMessage(param);

注意:

ConsumerDao接口上需要加上注解:@Repository("ConsumerDao")

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java开发环境系列:ngrok免费实现内网穿透

    登录系统,点击“隧道管理”>“开通隧道”,选择任意一个,点击“立即购买”,站长选择屌丝免费版

    架构师小跟班
  • Java开发环境系列:JDK安装及环境变量设置(linux)

    #sudo tar -zxvf jdk-8u111-linux-x64.tar.gz

    架构师小跟班
  • Java开发环境系列:消息队列RabbitMQ的安装与使用(windows)

    http://www.erlang.org/download/otp_win64_17.3.exe

    架构师小跟班
  • 如何记忆 Spring Bean 的生命周期

    “请你描述下 Spring Bean 的生命周期?”,这是面试官考察 Spring 的常用问题,可见是 Spring 中很重要的知识点。

    草捏子
  • day33_Spring学习回顾_01

    1、导入jar包:4 + 1 --> beans/core/context/expression + commons-logging

    黑泽君
  • Spring系列第4篇:xml中bean定义详解(-)

    我们再来回顾一下,被spring管理的对象统称为bean,我们程序中需要用到很多对象,我们将这些对象让spring去帮我们创建和管理,我们可以通过bean xm...

    路人甲Java
  • Spring Bean的解析和加载详细解释

    Core Container 包含 Core,Beans,Context,Expression Language 模块 Core 和 Beans 提供 IOC...

    黑白格
  • 真没想到!三十步才能完成bean实例的创建

    本文已收录至我的GitHub 在容器启动快完成时,会把所有的单例bean进行实例化,也可以叫做预先实例化。 这样做的好处之一是,可以及早地发现问题,及早的抛出...

    Java3y
  • Spring5参考指南:容器扩展

    Spring提供了一系列的接口来提供对Spring容器的扩展功能。下面我们一一介绍。

    程序那些事
  • 快速学习-Spring(Bean的生命周期)

    cwl_java

扫码关注云+社区

领取腾讯云代金券