在Spring MVC中ApplicationContext和WebApplicationContext的区别

在Spring MVC中ApplicationContext和WebApplicationContext的区别

Spring MVC 框架支持模块分离,即模型、视图和控制器,并无缝处理应用程序集成。这使得开发人员也可以使用普通Java类创建复杂的应用程序。模型对象可以通过映射在视图和控制器之间传递。

什么是ApplicationContext

Spring IoC容器负责实例化、连接、配置和管理对象的整个生命周期。 BeanFactoryApplicationContext 表示Spring IoC容器。ApplicationContext是BeanFactory的子接口。BeanFactory提供了基本的功能,建议将其用于移动和小程序等轻量级应用程序。ApplicationContext除了特定于企业的功能外,还提供了以下基本特性:

  • 通过解析属性文件将事件发布到注册的侦听器。
  • 用于访问应用程序组件的方法。
  • 支持国际化。
  • 以一般方式加载文件资源。

WebApplicationContext是什么

Spring中的WebApplicationContext是一个web感知的ApplicationContext,也就是说它有Servlet Context信息。在一个web应用程序中,可以有多个WebApplicationContext。这意味着每个DispatcherServlet都与单个WebApplicationContext相关联。WebApplicationContext配置文件*-servlet.xml是特定于DispatcherServlet的,一个web应用程序可以配置多个DispatcherServlet来处理请求,每个DispatcherServlet将有一个单独的*-servlet.xml文件来配置。

在Spring MVC中ApplicationContext和WebApplicationContext的区别

Factor 1: ApplicationContext用于创建独立应用。但对于web应用,我们需要处理一个叫做WebApplicationContext的容器。

A. 独立的App

// Creating container objects manually
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// Destroying container object manually
context.close();

B. Web App

您不需要创建和销毁容器对象。容器对象将在服务器启动时自动创建,并在服务器停止时销毁。

Factor 2: 另一个有趣的区别是,ApplicationContext和WebApplicationContext都是spring容器,其中WebApplicationContext是ApplicationContext接口的子容器。

public interface WebApplicationContext 
extends ApplicationContext 
{
  ...............
}

在简单了解ApplicationContext的用途以及独立应用程序和web应用程序之后,总结ApplicationContext和WebApplicationContext的区别,如下表所示:

ApplicationContext WebApplicationContext
ApplicationContext用于创建独立应用。 WebApplicationContext用于创建web应用。
ApplicationContext是WebApplicationContext接口的父接口。 WebApplicationContext是ApplicationContext接口的子接口。
在ApplicationContext的情况下,我们必须手动创建和销毁容器对象。 但是在WebApplicationContext的情况下,我们不需要创建和销毁容器对象。容器对象将自动创建。
在一个应用程序中总是只有一个ApplicationContext。 每个分派器servlet可以有多个WebApplicationContexts。
ApplicationContext表示Spring IoC容器,它是BeanFactory的子接口。 Spring中的WebApplicationContext是一个web感知的ApplicationContext,也就是说它有Servlet Context信息。
ApplicationContext用于注入所有中间层bean(服务、dao),这些中间层bean是使用web.xml中配置的“ContextLoaderListener”类实例化的。 WebApplicationContext用于处理与web相关的组件,如控制器和视图解析器,它是使用“DispatcherServlet”配置的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程