在SSH项目开发中,会使用到监听器Listener,并且有时需要在监听器中完成数据库的操作等动作,此时需要在Listener中使用到Spring容器中的Bean。Spring容器本身就是在web.xml中使用listener的方式启动的。想在例如Listener中使用依赖注入的方式完成Bean实例的注入,不能完成。

一种解决方案:在Listener中通过new的方式得到Spring容器的实例。如下代码:

//通过new的方式得到Spring容器的实例
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

结果是:可以取得Spring的容器,但是是重新生成了一个新的Spring的容器。SSH项目启动的时候已经自动生成了一个Spring的容器,这样就存在了两个Spring的容器。不可取。

最佳的解决方案是通过Spring提供的WebApplicationContextUtils 得到Spring容器的实例。代码如下:

  /** * 通过WebApplicationContextUtils 得到Spring容器的实例。根据bean的名称返回bean的实例。 * @param servletContext  :ServletContext上下文。 * @param beanName  :要取得的Spring容器中Bean的名称。 * @return 返回Bean的实例。 */  private Object getBeanFromApplicationContext(ServletContext servletContext,String beanName){  //通过WebApplicationContextUtils 得到Spring容器的实例。  ApplicationContext application=WebApplicationContextUtils.getWebApplicationContext(servletContext);  //返回Bean的实例。  return application.getBean(beanName);  }
}  

转载于:https://www.cnblogs.com/sddlt/p/6943458.html

Listener中应用spring管理的Bean相关推荐

  1. 170630、springboot编程之普通类中调用spring管理的bean对象

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...

  2. 如何在线程中获取spring 管理的bean

    问题说明 今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入 ...

  3. 【学习笔记】springBoot中获取sping管理的bean

    文章目录 一.使用场景 二.springBoot中获取sping管理的bean 2.1 生成工具类SpringContextUtil 2.2 使用工具类SpringContextUtil 2.3 注意 ...

  4. 在普通java类里获取Spring管理的bean

    转自:http://blog.csdn.net/a9529lty/article/details/42145545 如何取得Spring管理的bean  (请用第3种方法): 1.servlet方式加 ...

  5. 怎么随时获取Spring的上下文ApplicaitonContext,和Spring管理的Bean

    BeanFactory接口 Interface BeanFactory getBean <T> T getBean(String name,Class<T> requiredT ...

  6. (转)Spring管理的Bean的生命周期

    http://blog.csdn.net/yerenyuan_pku/article/details/52834011 bean的初始化时机 前面讲解了Spring容器管理的bean的作用域.接着我们 ...

  7. (转)配置Spring管理的bean的作用域

    http://blog.csdn.net/yerenyuan_pku/article/details/52833477 Spring管理的bean的作用域有: singleton  在每个Spring ...

  8. 【工具类】手动获取被spring管理的bean对象

    package com.zxl;import org.springframework.beans.BeansException; import org.springframework.context. ...

  9. JPA EntityListeners中的Spring注入的Bean

    在使用JPA侦听器进行数据库加密中,我讨论了使用JPA EntityListener进行透明加密. 从某种意义上说,这种方法是透明的,因为JPA实体(几乎)完全不知道正在加密,而JPA EntityL ...

  10. 在Servlet中获取Spring注解的bean

    最近由于项目中出现了Servlet调用Spring的bean,由于整个项目中所有的bean均是注解方式完成,如@Service,@Repository,@Resource等,但是Spring的容器管理 ...

最新文章

  1. eclipse failed to load the jni jvm.dll
  2. 集存款(复利单利)贷款为一体的计算器(最新版)
  3. 【5min+】 巨大的争议?C# 8 中的接口
  4. python基本符合_python 3-3(2019-11-06 ) Python基础 (三)
  5. Javascript中的内置对象:RegExp对象
  6. [Linux] 动态库加载顺序
  7. 第四章:变量、作用域和内存问题
  8. 如何做好BI项目的规划与实施方案?
  9. 均匀试验设计表格的问题
  10. 邮件营销:邮件标题如何变得更有吸引力
  11. Java编程题:年会抽奖(错排问题)
  12. Latex排版论文——傻瓜式操作一晚排出毕业论文
  13. 帝国cms生成动态php栏目,帝国cms怎么实现页面自动生成html
  14. 微信小程序如何快速达到1000UV流量主开通要求
  15. java实现基于okhttp3的http请求封装(GET/POST/PUT/DELETE等方法)
  16. golang 同一个包下不同文件之间函数调用问题
  17. AIOps需要翻越的「三座大山」
  18. [思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具
  19. 使用axios方式实现Ajax请求
  20. 应用在hiapk安卓市场分类排行榜中不显示的原因

热门文章

  1. 二级公共基础之——数据结构与算法
  2. photoshop cs3 无法复制文字的解决方案
  3. Android客户端和服务器端数据交互的第一种方法
  4. 简单搭建es6编译环境
  5. 去掉iPhone、iPad的默认按钮样式
  6. 解决Windows下Redis出现“MISCONF Redis is configured to save RDB snapshots”的错误
  7. 自己配置外接屏幕和驱动,最终通过hdmi连接
  8. 递归下降分析器 c++_专业围观质谱:汇总常见质谱仪专业对比分析!质量分析器直白解剖让你秒懂!...
  9. python如何导入类里_Python中如何导入类示例详解
  10. java编写的爬虫demo_我用Java写的第一个爬虫Demo-爬图片