原文链接:http://blog.csdn.net/a9529lty/article/details/42145545

1、servlet方式加载时,
【web.xml】

  1. <servlet>
  2. <servlet-name>springMVC</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contExtConfigLocation</param-name>
  6. <param-value>classpath*:/springMVC.xml</param-value>
  7. </init-param>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet>

spring容器放在ServletContext中的key是org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC
注意后面的springMVC,是你的servlet-name配置的值,注意适时修改。

  1. ServletContext sc=略
  2. WebApplicationContext attr = (WebApplicationContext)sc.getAttribute("org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC");

2、listener方式加载时:
【web.xml】

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>/WEB-INF/applicationContext</param-value>
  4. </context-param>
  5. <listener>
  6. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  7. </listener>

jsp/servlet】可以这样取得

  1. ServletContext context = getServletContext();
  2. WebApplicationContext applicationContext  = WebApplicationContextUtils .getWebApplicationContext(context);

3、通用的方法来了,神器啊,前的  1、2两种方法并不通用,可以抛弃了。
在配置文件中加入:

  1. <!-- 用于持有ApplicationContext,可以使用SpringContextHolder.getBean('xxxx')的静态方法得到spring bean对象 -->
  2. <bean class="com.xxxxx.SpringContextHolder" lazy-init="false" />
    1. import org.springframework.context.ApplicationContext;
    2. import org.springframework.context.ApplicationContextAware;
    3. /**
    4. * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.
    5. *
    6. */
    7. public class SpringContextHolder implements ApplicationContextAware {
    8. private static ApplicationContext applicationContext;
    9. /**
    10. * 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
    11. */
    12. public void setApplicationContext(ApplicationContext applicationContext) {
    13. SpringContextHolder.applicationContext = applicationContext; // NOSONAR
    14. }
    15. /**
    16. * 取得存储在静态变量中的ApplicationContext.
    17. */
    18. public static ApplicationContext getApplicationContext() {
    19. checkApplicationContext();
    20. return applicationContext;
    21. }
    22. /**
    23. * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
    24. */
    25. @SuppressWarnings("unchecked")
    26. public static <T> T getBean(String name) {
    27. checkApplicationContext();
    28. return (T) applicationContext.getBean(name);
    29. }
    30. /**
    31. * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
    32. */
    33. @SuppressWarnings("unchecked")
    34. public static <T> T getBean(Class<T> clazz) {
    35. checkApplicationContext();
    36. return (T) applicationContext.getBeansOfType(clazz);
    37. }
    38. /**
    39. * 清除applicationContext静态变量.
    40. */
    41. public static void cleanApplicationContext() {
    42. applicationContext = null;
    43. }
    44. private static void checkApplicationContext() {
    45. if (applicationContext == null) {
    46. throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");
    47. }
    48. }
    49. }

转:如何取得Spring管理的bean的更多相关文章

  1. 将spring管理的bean使用注解的方式注入到servlet中

    Filter和Servlet中不能直接注解使用spring的bean,因为这两个都是servlet容器维护管理的,当然也有实现方法,如下: 1.创建一个AbstractServlet 抽象类,让你的所 ...

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

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

  3. 为何在新线程中使用注解获取不到Spring管理的Bean

    新建的线程类NewThread,在这个类中国使用Spring的注解获取Service,为null 网上已有这种问题的解决方案,但是为何在新线程中使用注解获取不到Spring管理的Bean? 问了老大, ...

  4. 手动获取被spring管理的bean对象工具

       在netty handler开发中,我们无法将spring的依赖注入到Handler中,无法进行数据库的操作,这时候我们就需要手动获取被spring管理的bean对象:    创建一个  imp ...

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

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

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

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

  7. Servlet中获取Spring管理的bean

    描述: 在Servlet中调用Spring管理的接口,可以使Dao/Service/ServiceImpl. 前提是在调用的bean中有注解: @Repository("beanName&q ...

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

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

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

    转载自:https://my.oschina.net/skyline520/blog/181158?fromerr=GjtR6Wec spring xml中定义 <!--spring 工具类-- ...

  10. SpringContextHolder 静态持有SpringContext的引用(如何取得Spring管理的bean )

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

随机推荐

  1. Javascript(jQuery)中绑定页面上所有按钮点击事件的几种方式

    方法一:使用document对象查找所有的按钮 [javascript] view plain copy 在CODE上查看代码片派生到我的代码片 //按照dom的方式添加事件处理 function B ...

  2. Uploadify 3.2 参数属性、事件、方法函数详解

    一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonClass ” 按钮样式 buttonCursor ‘ ...

  3. mac不可或缺的套件管理器Homebrew

    Homebrew 1.简介 可以帮助我们快速安装软件, 如 brew install svn 快速卸载软件 , 如  brew uninstall svn 2.下载 打开终端, /usr/bin/ru ...

  4. linux centos6 NAT 端口转发

    有很多时候我们为了安全,需要将例如数据库服务器放到内网中.但是有些时候又系统给外网开一个端口,这时就可以利用外网的服务器进行一个端口转发.今天我们以centos6 为例进行端口转发配置. 首先vi / ...

  5. 在WWDC 2014上,没提到的iOS 8 八大新特性

    今天凌晨1点,36氪如约为大家研磨出WWDC 2014全程 "贴身直播"(我不得不佩服牺牲个人时间,熬夜为大家奉上好文的5位氪星人:JasonZheng.WANGJINGYU.pa ...

  6. IE下载打印文件的时候,下载打印闪一下就没有了

    这是因为我们的浏览器没有将文件下载的自动提示设为启用.点击IE菜单栏中的“工具”—“Internet选项”-安全—可信站点—自定义级别 1,添加信任站点 打开IE浏览器,输入需要下载文件的地址 选择[ ...

  7. ZOJ 3827 Information Entropy 水题

    Information Entropy Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/sh ...

  8. 用普通IO驱动LCD的控制方法-松瀚汇编源程序

    /*************************************** 本例程为IO直接驱动LCD的方法 以下是松瀚MCU汇编源程序 **************************** ...

  9. FloatingWindow

    https://github.com/dev0x10/android-bubble https://github.com/dev0x10/FloatingView https://github.com ...

  10. java.util.Scanner的日常用法

    Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的.查看最新在线文档: public final class Scanner extends Object implements ...