知识大全 Spring获取Bean的几种方式

Posted

篇首语:赋料扬雄敌,诗看子建亲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring获取Bean的几种方式相关的知识,希望对你有一定的参考价值。

Spring获取Bean的几种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  方法一 在初始化时保存ApplicationContext对象

  代码 ApplicationContext ac = new FileSystemXmlApplicationContex( applicationContext xml );    ac getBean( beanId );    说明     这种方式适用于采用Spring框架的独立应用程序 需要程序通过配置文件手工初始化Spring的情况  方法二 通过Spring提供的工具类获取ApplicationContext对象代码  import sprntext support WebApplicationContextUtils;ApplicationContext ac = WebApplicationContextUtils getRequiredWebApplicationContext(ServletContext sc)ApplicationContext ac = WebApplicationContextUtils getWebApplicationContext(ServletContext sc)    ac getBean( beanId );    ac getBean( beanId ); 说明      这种方式适合于采用Spring框架的B/S系统 通过ServletContext对象获取ApplicationContext对象 然后在通过它获取需要的类实例 上面两个工具方式的区别是 前者在获取失败时抛出异常 后者返回null

其中 servletContext sc 可以具体 换成 servlet getServletContext()或者 this getServletContext() 或者 request getSession() getServletContext();

  另外 由于spring是注入的对象放在ServletContext中的 所以可以直接在ServletContext取出WebApplicationContext 对象

  WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext getAttribute(WebApplicationContext ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);         方法三 继承自抽象类ApplicationObjectSupport   说明      抽象类ApplicationObjectSupport提供getApplicationContext()方法 可以方便的获取到ApplicationContext Spring初始化时 会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入

  

  方法四 继承自抽象类WebApplicationObjectSupport   说明          类似上面方法 调用getWebApplicationContext()获取WebApplicationContext 方法五 实现接口ApplicationContextAware  说明      实现该接口的setApplicationContext(ApplicationContext context)方法 并保存ApplicationContext 对象 Spring初始化时 会通过该方法将ApplicationContext 对象注入  以上方法适合不同的情况 请根据具体情况选用相应的方法 这里值得提一点的是 系统中用到上述方法的类实际上就于Spring框架紧密耦合在一起了 因为这些类是知道它们是运行在Spring框架上的 因此 系统中 应该尽量的减少这类应用 使系统尽可能的独立于当前运行环境 尽量通过DI的方式获取需要的服务提供者

  

  然后在Action中编写如下代码得到Context (我是覆蓋了Struts Action的setServlet方法 也许还有更好的方法)

  public void setServlet(ActionServlet servlet)         super setServlet(servlet);         ServletContext servletContext = servlet getServletContext();        WebApplicationContext wac =    WebApplicationContextUtils getRequiredWebApplicationContext(servletContext);         // get yours beans

  我需要在spring的bean中直接获取 这下可和我们常规的操作有些不同 因为spring的bean都是pojo的 根本见不著servletconfig和servletcontext的影子

  这里我需要指出spring给我们提供了两个接口 sprntext ServletContextAware和

   sprntext ServletConfigAware 我们可以让我们的bean实现上边的任何一个接口就能获取到servletContext了

  代码如下

  public class DicBean implements ServletContextAware    private ServletContext servletContext;public void setServletContext(ServletContext sc)     this servletContext=sc;    System out println( 项目的绝对路径为 +servletContext getRealPath( / ));

cha138/Article/program/Java/ky/201311/28433

相关参考

知识大全 解析Java中如何获取Spring中配置的bean

解析Java中如何获取Spring中配置的bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本

知识大全 spring中读取xml配置文件、获取bean

  读取xml文件  /**  *利用XmlBeanFactory(Resourceresource)  *这里Resource必须是xml格式  *Resource包括AbstractResourc

知识大全 使用SpringtUtil获取Spring IoC容器中的Bean

使用SpringtUtil获取SpringIoC容器中的Bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 spring中bean的注入方式的选择

  在spring中提供了三种可供选择的注入方式  提供set/get方法  构造函数  工厂方法的运用  大家对这三种方法的选择都是仁者见仁智者见智一下我是我支构造函数的理由  保证一些重要的属性在

知识大全 c#异步调用的几种方式

  首先我们分析一下异步处理的环境  需要在当前线程中获取返回值  不需要在当前线程中获取返回值但是仍然需要对返回值做处理  对于第中情况还可以继续细分  在当前线程中启动线程T然后继续执行当前线程中

知识大全 自然的访问spring容器中的bean

   Spring依赖其IOC特征轻松的管理著一堆非常有价值的bean这些bean在spring容器中的依赖关系都已注入好所以相互调用非常方便  但既然是有价值的bean

知识大全 Spring容器对Bean组件的管理

Spring容器对Bean组件的管理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一Bean对

知识大全 Spring创建Bean的过程

Spring创建Bean的过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  beans包提供了

知识大全 详解Spring中bean的scope

详解Spring中bean的scope  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何使用s

知识大全 Spring中bean的基本xml配置

Spring中bean的基本xml配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在spri