📜  Spring MVC中ApplicationContext和WebApplicationContext的区别

📅  最后修改于: 2022-05-13 01:54:24.778000             🧑  作者: Mango

Spring MVC中ApplicationContext和WebApplicationContext的区别

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

什么是应用程序上下文?

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

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

什么是 WebApplicationContext?

Spring 中的 WebApplicationContext 是一个可感知网络的 ApplicationContext,即它具有 Servlet 上下文信息。在单个 Web 应用程序中,可以有多个 WebApplicationContext。这意味着每个 DispatcherServlet 都与一个 WebApplicationContext 相关联。 WebApplicationContext 配置文件 *-servlet.xml 是特定于 DispatcherServlet 的,一个 Web 应用程序可以配置多个 DispatcherServlet 来处理请求,并且每个 DispatcherServlet 都有一个单独的 *-servlet.xml 文件来配置。

Spring MVC中ApplicationContext和WebApplicationContext的区别

因素 1: ApplicationContext 用于创建独立的应用程序。但是对于 Web 应用程序,我们必须处理一个名为 WebApplicationContext 的容器。

A. 独立应用

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

B. 网络应用

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

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

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

在大致了解了用途以及独立应用程序和Web应用程序之后,总结一下ApplicationContext和WebApplicationContext之间的区别,以表格的方式描述如下:

ApplicationContext 

WebApplicationContext 

ApplicationContext is used to create standalone applications.WebApplicationContext is used to create web applications.
ApplicationContext is the parent of the WebApplicationContext interface.WebApplicationContext is the child of the ApplicationContext interface.
In the case of ApplicationContext, we have to create and destroy the container objects manually.But in the case of WebApplicationContext, we don’t need to create and destroy the container object. The container object will be created automatically.
There is always a single ApplicationContext in an application.There can be multiple WebApplicationContexts for each of the dispatcher servlets.
ApplicationContext represents the Spring IoC Containers and it is the sub-interface of BeanFactory. WebApplicationContext in Spring is a web-aware ApplicationContext i.e it has Servlet Context information.
ApplicationContext is used to inject all the middle-tier beans (Services, DAOs) which are instantiated using the “ContextLoaderListener” class configured in web.xml.WebApplicationContext is used to deal with the web-related components such as controllers and view resolvers, which is configured using “DispatcherServlet”.