`
dawuafang
  • 浏览: 1108219 次
文章分类
社区版块
存档分类
最新评论

如何取得Spring管理的bean (请用第3种方法)

 
阅读更多

如何取得Spring管理的bean (请用第3种方法):

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

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配置的值,注意适时修改。

Java代码
  1. ServletContextsc=略
  2. WebApplicationContextattr=(WebApplicationContext)sc.getAttribute("org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC");

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

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】可以这样取得

Java代码
  1. ServletContextcontext=getServletContext();
  2. WebApplicationContextapplicationContext=WebApplicationContextUtils.getWebApplicationContext(context);

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

Xml代码
  1. <!--用于持有ApplicationContext,可以使用SpringContextHolder.getBean('xxxx')的静态方法得到springbean对象-->
  2. <beanclass="com.xxxxx.SpringContextHolder"lazy-init="false"/>

Java代码
  1. importorg.springframework.context.ApplicationContext;
  2. importorg.springframework.context.ApplicationContextAware;
  3. /**
  4. *以静态变量保存SpringApplicationContext,可在任何代码任何地方任何时候中取出ApplicaitonContext.
  5. *
  6. */
  7. publicclassSpringContextHolderimplementsApplicationContextAware{
  8. privatestaticApplicationContextapplicationContext;
  9. /**
  10. *实现ApplicationContextAware接口的context注入函数,将其存入静态变量.
  11. */
  12. publicvoidsetApplicationContext(ApplicationContextapplicationContext){
  13. SpringContextHolder.applicationContext=applicationContext;//NOSONAR
  14. }
  15. /**
  16. *取得存储在静态变量中的ApplicationContext.
  17. */
  18. publicstaticApplicationContextgetApplicationContext(){
  19. checkApplicationContext();
  20. returnapplicationContext;
  21. }
  22. /**
  23. *从静态变量ApplicationContext中取得Bean,自动转型为所赋值对象的类型.
  24. */
  25. @SuppressWarnings("unchecked")
  26. publicstatic<T>TgetBean(Stringname){
  27. checkApplicationContext();
  28. return(T)applicationContext.getBean(name);
  29. }
  30. /**
  31. *从静态变量ApplicationContext中取得Bean,自动转型为所赋值对象的类型.
  32. */
  33. @SuppressWarnings("unchecked")
  34. publicstatic<T>TgetBean(Class<T>clazz){
  35. checkApplicationContext();
  36. return(T)applicationContext.getBeansOfType(clazz);
  37. }
  38. /**
  39. *清除applicationContext静态变量.
  40. */
  41. publicstaticvoidcleanApplicationContext(){
  42. applicationContext=null;
  43. }
  44. privatestaticvoidcheckApplicationContext(){
  45. if(applicationContext==null){
  46. thrownewIllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");
  47. }
  48. }
  49. }
分享到:
评论

相关推荐

    Spring攻略PDF版

     第3章 Spring中的Bean配置   3.1 在Spring IoC容器里配置Bean   3.1.1 问题描述   3.1.2 解决方案   3.1.3 实现方法   3.2 实例化Spring IoC容器   3.2.1 问题描述   3.2.2 解决方案...

    Spring攻略中文版PDF

     第3章 Spring中的Bean配置   3.1 在Spring IoC容器里配置Bean   3.1.1 问题描述   3.1.2 解决方案   3.1.3 实现方法   3.2 实例化Spring IoC容器   3.2.1 问题描述   3.2.2 解决方案...

    spring五种事务配置demo

    第3种方式:使用拦截器 详见spring-core-transaction-3.xml 第4种方式:使用tx标签配置的拦截器 详见spring-core-transaction-4.xml 第5种方式:全注解 详见spring-core-transaction-5.xml

    Spring攻略英文版(附带源码)

     第3章 Spring中的Bean配置   3.1 在Spring IoC容器里配置Bean   3.1.1 问题描述   3.1.2 解决方案   3.1.3 实现方法   3.2 实例化Spring IoC容器   3.2.1 问题描述   3.2.2 解决方案   ...

    SPRING3技术内幕

    Spring技术内幕 深入解析Spring架构与设计原理1(完整清晰版),一共两部分,这是第一部分 《Spring技术内幕:深入解析Spring架构与设计原理》是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自...

    spring培训-笔记

    BeanFactory管理Bean(组件)的生命周期 15 Bean的定义 16 Bean的之前初始化 19 Bean的准备就绪(Ready)状态 21 Bean的销毁 21 ApplicationContext 21 Spring的AOP框架 21 Spring的数据层访问 22 Spring的...

    跟我学spring3(8-13)

    【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3 【第九章】 Spring的事务 之 9.3 编程式事务 ——跟我学spring3 【第九章】 Spring的事务 之 9.4 声明式事务 ——跟我学spring3 【第十章】集成其它...

    Spring攻略(第二版 中文高清版).part1

    第3章 Spring AOP和AspectJ支持 112 3.1 启用Spring的AspectJ注解支持 113 3.1.1 问题 113 3.1.2 解决方案 113 3.1.3 工作原理 113 3.2 用AspectJ注解声明aspect 115 3.2.1 问题 115 3.2.2 解决方案...

    跟我学spring3(1-7)

    【第五章】Spring表达式语言 之 5.4在Bean定义中使用EL—跟我学spring3 【第六章】 AOP 之 6.1 AOP基础 ——跟我学spring3 【第六章】 AOP 之 6.2 AOP的HelloWorld ——跟我学spring3 【第六章】 AOP 之 6.3 基于...

    Spring+3.x企业应用开发实战光盘源码(全)

     第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行讲解。  第4章:讲解如何在Spring配置文件中使用Spring 3.0...

    Spring教程  主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。

    BeanFactory管理Bean(组件)的生命周期 15 Bean的定义 16 Bean的之前初始化 19 Bean的准备就绪(Ready)状态 21 Bean的销毁 21 ApplicationContext 21 Spring的AOP框架 21 Spring的数据层访问 22 Spring的声明式...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    spring2.0技术手册 (扫描版)

    第3章Bean、消息、事件 第4章SpringAOP 第5章JDBC、事务支持 第6章Hibernate与Spring 第7章SpringWebMVC框架 第8章View层方案、Web框架整合 第9章API封装 第10章项目:Spring在线书签 Spring Framework 是一...

    Spring in Action 中文版 第2版 第二部分

    第3章 高级bean装配 第4章 通知bean 第二部分 企业spring 第5章 使用数据库 第6章 事务管理 第7章 保护spring 第8章 spring和基于pojo的远程服务 第9章 在spring中建立契约优先web服务 第10章 spring消息 第...

    Spring in Action 中文版 第2版 第一部分

    第3章 高级bean装配 第4章 通知bean 第二部分 企业spring 第5章 使用数据库 第6章 事务管理 第7章 保护spring 第8章 spring和基于pojo的远程服务 第9章 在spring中建立契约优先web服务 第10章 spring消息 第...

    Spring攻略(第二版 中文高清版).part2

    第3章 Spring AOP和AspectJ支持 112 3.1 启用Spring的AspectJ注解支持 113 3.1.1 问题 113 3.1.2 解决方案 113 3.1.3 工作原理 113 3.2 用AspectJ注解声明aspect 115 3.2.1 问题 115 3.2.2 解决方案...

    Spring in Action(第2版)中文版

    12.4使用jmx管理springbean 12.4.1将springbean输出为mbean 12.4.2远程访问mbean 12.4.3处理通知 12.5小结 第三部分spring客户端 第13章处理web请求 13.1开始springmvc之旅 13.1.1请求生命中的一天 13.1.2...

    spring杂谈 作者zhang KaiTao

    1.8 Spring3.1 对Bean Validation规范的新支持(方法级别验证) 1.9 Spring对事务管理的支持的发展历程(基础篇) 1.10 基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。 ...

    Spring 2.0 开发参考手册

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. ...

    Spring in Action(第二版 中文高清版).part2

    第3章 高级Bean装配 3.1 声明父Bean和子Bean 3.1.1 抽象基Bean类型 3.1.2 抽象共同属性 3.2 方法注入 3.2.1 基本的方法替换 3.2.2 获取器注入 3.3 注入非Spring Bean 3.4 注册自定义属性编辑器 3.5 使用...

Global site tag (gtag.js) - Google Analytics