`

获取webapplicationcontext,applicationcontext几种方法

阅读更多

方法一:在初始化时保存ApplicationContext对象
代码:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。

方法二:通过Spring提供的工具类获取ApplicationContext对象
代码:
import org.springframework.web.context.support.WebApplicationContextUtils;
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac1.getBean("beanId");
ac2.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获取webapplicationcontext,applicationcontext几种方法详解

    Spring 获取 WebApplicationContext、ApplicationContext 几种方法详解 在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的...

    几种spring获取bean的方法.txt

    根据提供的文件信息,我们可以总结出以下关于Spring框架中获取Bean的几种方法的相关知识点: ### Spring框架简介 Spring框架是一款开源的轻量级Java EE应用程序开发框架,它通过提供一系列强大的功能来简化Java...

    获取spring容器的方法

    本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...

    在action以外的地方获取dao

    为了实现这一目标,Spring提供了一种方法来让我们在非Action类中获取到ApplicationContext上下文对象,进而通过这个上下文对象获取到所需的Bean实例,例如DAO层的对象。本文将详细介绍如何在Action以外的地方获取DAO...

    Spring在代码中获取bean的几种方式详解

    与方法三类似,我们可以继承自抽象类`WebApplicationObjectSupport`,然后使用其提供的`getWebApplicationContext()`方法获取WebApplicationContext对象。例如: ``` public class MyBean extends ...

    Spring在代码中获取bean的方法小结

    本文将总结几种在代码中获取Spring Bean的方法,以供学习和工作中参考。 **1. 通过`ContextLoader.getCurrentWebApplicationContext()`获取** 这种方式适用于Web应用程序,不依赖于Servlet。在服务器启动后,...

    监听器获取Spring配置文件的方法

    有以下几种方法: 1. **直接加载beans.xml文件** 这种方法是直接使用`ClassPathXmlApplicationContext`来加载配置文件,然后从上下文(ApplicationContext)中获取bean。例如: ```java ApplicationContext ...

    Spring基础面试

    Spring IOC 中依赖注入有几种方式? - **知识点**: Spring 支持多种依赖注入的方式,主要包括:属性注入、构造器注入和工厂方法注入。 - **解释**: - **属性注入**:通过 setter 方法进行依赖注入,这种方式比较...

    Spring中多配置文件及引用其他bean的方式

    **Spring读取配置文件的几种方式:** 1. **使用ApplicationContext**:Spring提供了`ClassPathXmlApplicationContext`和`FileSystemXmlApplicationContext`来读取配置文件。前者从类路径(CLASSPATH)加载,后者从...

    struts+spring+hibernate三大框架整合

    1. **使用Spring的ActionSupport**:Action类直接继承自Spring的ActionSupport,通过`super.getWebApplicationContext()`获取Spring上下文,然后通过`ApplicationContext.getBean()`获取bean。这种方式简单,但...

    Spring系列面试题129道(附答案解析)

    它不仅包括了ApplicationContext的功能,还提供了获取ServletContext的功能,以及与Servlet容器的集成。 51、什么是spring? 这里可能是一个错误,应该是“什么是Spring?”,Spring是一个用于开发Java应用的开源框架...

    spring mvc 快速入门深入分析

    Spring MVC 提供了几种方式来处理静态资源(如CSS、JavaScript、图片等): - 使用默认配置,Spring MVC 会自动寻找位于`/WEB-INF/resources/`下的静态资源。 - 可以通过`<mvc:resources>`标签指定静态资源的位置。...

    spring核心源码详细解读

    `refresh()`方法是启动Spring IoC容器的关键,下面是对该方法中几个关键步骤的详细解释: 1. **`loadBeanDefinitions`**:读取并加载配置文件中的Bean定义信息。 2. **`prepareRefresh`**:做一些基本的初始化准备...

    Spring MVC面试宝典1.pdf

    主要通过以下几种方式: - **非线程安全的成员变量**:确保控制器中不包含任何实例级别的成员变量。如果必须使用成员变量,则应该标记为`final`或使用线程安全的数据结构。 - **依赖注入**:利用Spring的依赖注入...

    ssh(structs,spring,hibernate)框架中的上传下载

     此外lazy="true"说明地返回整个Tfile对象时,并不返回fileContent这个字段的数据,只有在显式调用tfile.getFileContent()方法时才真正从数据库中获取fileContent的数据。这是Hibernate3引入的新特性,对于包含重量...

    spring mvc

    此外,也可以使用 `ApplicationContext` 对象手动获取 Bean。 #### 十八、Spring MVC 多视图控制器 多视图控制器允许一个控制器处理多个视图请求。这可以通过在控制器类中定义多个方法,并分别使用 `@...

Global site tag (gtag.js) - Google Analytics