知识大全 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( / ));
相关参考
知识大全 解析Java中如何获取Spring中配置的bean
解析Java中如何获取Spring中配置的bean 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本
读取xml文件 /** *利用XmlBeanFactory(Resourceresource) *这里Resource必须是xml格式 *Resource包括AbstractResourc
知识大全 使用SpringtUtil获取Spring IoC容器中的Bean
使用SpringtUtil获取SpringIoC容器中的Bean 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
在spring中提供了三种可供选择的注入方式 提供set/get方法 构造函数 工厂方法的运用 大家对这三种方法的选择都是仁者见仁智者见智一下我是我支构造函数的理由 保证一些重要的属性在
首先我们分析一下异步处理的环境 需要在当前线程中获取返回值 不需要在当前线程中获取返回值但是仍然需要对返回值做处理 对于第中情况还可以继续细分 在当前线程中启动线程T然后继续执行当前线程中
Spring依赖其IOC特征轻松的管理著一堆非常有价值的bean这些bean在spring容器中的依赖关系都已注入好所以相互调用非常方便 但既然是有价值的bean
Spring容器对Bean组件的管理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一Bean对
Spring创建Bean的过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! beans包提供了
详解Spring中bean的scope 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何使用s
Spring中bean的基本xml配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在spri