`

spring applicationContext 和webApplicationContext 区别

阅读更多

 

        Spring中的ApplicationContexts可以被限制在不同的作用域。在web框架中,每个DispatcherServlet有它自己的WebApplicationContext,它包含了DispatcherServlet配置所需要的bean。DispatcherServlet 使用的缺省BeanFactory是XmlBeanFactory,并且DispatcherServlet在初始化时会在你的web应用的WEB-INF目录下寻找[servlet-name]-servlet.xml文件。DispatcherServlet使用的缺省值可以使用servlet初始化参数修改,

 

        WebApplicationContext仅仅是一个拥有web应用必要功能的普通ApplicationContext。它和一个标准的ApplicationContext的不同之处在于它能够解析主题,并且它知道和那个servlet关联(通过到ServletContext的连接)。WebApplicationContext被绑定在ServletContext上,当你需要的时候,可以使用RequestContextUtils找到WebApplicationContext。

Spring的DispatcherServlet有一组特殊的bean,用来处理请求和显示相应的视图。这些bean包含在Spring的框架里,(可选择)可以在WebApplicationContext中配置,配置方式就象配置其它bean的方式一样。这些bean中的每一个都在下面被详细描述。待一会儿,我们就会提到它们,但这里仅仅是让你知道它们的存在以便我们继续讨论DispatcherServlet。对大多数bean,都提供了缺省值,所有你不必要担心它们的值。

 

        servletContext 是web应用程序的大环境,用于存储整个web应用程序级别的对象,不知道这样说法是否对.

ApplicationContext,WebApplicationContext 是Spring的BeanFactory,从名字中就可以知道区别拉,一个是支持web特性的BeanFactory。

Spring获取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对象注入。 

在web应用中一般用ContextLoaderListener加载webapplication,如果需要在action之外或者control类之外获取webapplication思路之一是,单独写个类放在static变量中。

 

转载:

http://blog.csdn.net/linfssay/article/details/8697830

分享到:
评论

相关推荐

    Spring中ApplicationContext加载机制

    ApplicationContext 是 Spring 框架中的核心组件之一,负责加载和管理应用程序中的 Bean 对象。在 Web 应用程序中,ApplicationContext 的加载机制是非常重要的, Spring 提供了多种方式来加载 ApplicationContext。...

    Spring获取webapplicationcontext,applicationcontext几种方法详解

    在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的入口。下面将详细介绍五种获取 WebApplicationContext 和 ...

    Spring MVC开发配置文件 applicationContext

    Spring Web MVC开发 xml配置文件格式,无bean之类 Spring Web MVC开发配置文件 applicationContext

    Spring MVC之WebApplicationContext_动力节点Java学院整理

    Spring MVC是Java领域非常流行的Web框架,而WebApplicationContext是Spring MVC中用于Web应用的一种特殊的ApplicationContext。在了解WebApplicationContext之前,我们先简单回顾一下Spring的IoC容器。IoC...

    springMVC+hibernage+spring(基于spring2.5和hibernate3.0)jar包

    集成这三个框架时,通常需要配置Spring的ApplicationContext和WebApplicationContext,定义Bean的定义和依赖关系,以及配置Hibernate的sessionFactory和数据源。同时,还需要编写Controller、Service和DAO层的代码,...

    spring doc格式

    2. **与其他框架集成**:Spring可以很好地与现有的WebWork、Struts或Tapestry等UI框架配合,通过ApplicationContext和WebApplicationContext进行业务逻辑和前端的集成,同时利用Spring的事务管理服务。 3. **远程...

    springmvc spring 两套上下文问题

    这两套上下文分别是Spring的ApplicationContext和DispatcherServlet的WebApplicationContext。 首先,我们需要理解ApplicationContext。它是Spring的核心,负责管理所有的Bean。当应用程序启动时,通常会创建一个...

    SpringTest_springtest_spring_java_Framework_

    Spring Boot Test则为Spring Boot应用提供了更便捷的测试工具,包括对MockMVC、WebApplicationContext和嵌入式Servlet容器的支持。 "spring"和"java Framework"明确了讨论的焦点是基于Java的Spring框架。Spring框架...

    获取spring容器的方法

    Spring还提供了`ApplicationObjectSupport`和`WebApplicationObjectSupport`这两个抽象类,它们内置了对`ApplicationContext`的访问支持。通过继承这些类,可以方便地在自己的类中调用`getApplicationContext()`方法...

    ApplicationContext及它的3种实现

    在Spring框架中,`ApplicationContext`是`BeanFactory`接口的一个扩展,提供了更为丰富的功能和服务。它不仅继承了`BeanFactory`的所有特性,还增加了如资源加载、消息源国际化、事件发布等高级特性。这使得`...

    Spring 和 struts 整合的三种方式

    在企业级Java应用程序开发中,Spring和Struts都是常见的框架,它们分别负责不同的职责:Spring作为全面的轻量级框架,提供依赖注入、事务管理、AOP等服务;而Struts则专注于MVC架构的实现,处理HTTP请求并驱动视图。...

    Spring 管理filter 和servlet

    通过Spring管理Filter和Servlet,不仅可以充分利用Spring的依赖注入能力,简化Filter和Servlet的配置,还能增强代码的可维护性和可扩展性。开发者无需在Filter或Servlet内部硬编码bean名称,而是通过Spring容器自动...

    Spring Web MVC外文翻译

    了解 Spring Web MVC 的核心概念和架构设计,对于理解和开发基于 Spring 的 Web 应用程序至关重要。特别是 DispatcherServlet 的配置及其与 WebApplicationContext 的交互方式,是深入掌握 Spring Web MVC 不可缺少...

    spring3.x的读书笔记-1

    Spring 框架的核心接口包括 BeanFactory、ApplicationContext 和 WebApplicationContext。BeanFactory 是 Spring 容器的基础,负责管理对象的生命周期和依赖关系。ApplicationContext 建立在 BeanFactory 之上,增加...

    Spring如何获取Bean

    在 Spring 框架中,我们可以通过 XML 配置文件来配置 Bean,然后使用 ApplicationContext 来获取这些 Bean。这种方式是最常用的方式之一。我们可以在 XML 配置文件中定义 Bean,然后使用 ...

    spring4.1核心包

    包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 18. spring-webmvc-4.1.1.RELEASE.jar 包含...

    spring-web-5.3.6 jar包.rar

    这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP...

    spring jar 包详解

    - **功能简介**:包含了 Web 应用开发时使用 Spring 框架时所需的核心类,包括自动载入 WebApplicationContext 特性的类、Struts 与 JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。 - **应用场景**:...

    org.springframework.context_3.0.5.release.jar.zip

    总结,`org.springframework.context_3.0.5.release.jar`作为Spring框架的核心组件,其提供的ApplicationContext接口和服务对于Java应用的构建至关重要。理解和熟练使用ApplicationContext,可以极大地提高开发效率...

    框架sprinigmvc4.1.6+spring4.1.6+hibernate4.1.7+maven整合

    3. 配置Spring的ApplicationContext和WebApplicationContext,定义bean。 4. 实现Controller,处理HTTP请求,调用Service。 5. 编写Service层,通过Spring的@Autowired注入DAO,执行业务逻辑。 6. 配置Hibernate ...

Global site tag (gtag.js) - Google Analytics