首页 > 解决方案 > Spring Web 应用程序架构中的上下文级别

问题描述

我在 Spring Web 应用程序的体系结构级别上苦苦挣扎,下面我正在提出我的建议。请就以下问题提供帮助:

上下文级编程: Servlet 上下文和根应用程序 Web 应用程序上下文和 Web 应用程序上下文。

  1. 我不知道哪个bean需要在哪个级别上提及。

  2. Spring Web 应用程序中上下文的层次结构级别是什么。哪个更高或更低。

  3. 哪个语境在哪个语境下。

我的理解是Servlet ContextServlet Container(tomcat 容器)的对象,而 Servlet 容器负责管理所有的 servlet,所有的 servlet 所在的地方。

所有 Bean 依赖项都存在于 Application 容器中,而根 Web 应用程序上下文是 Application Container 的对象。

每个 servlet 都有自己的 Web 应用程序上下文,我不知道这是什么,它是否与 Servlet 上下文相同。

4.他们之间的关系?

请用这样的图表来描述它,(这将是非常可观的)

这只是了解哪些先加载以及哪些内容在其中的示例。 请检查此参考图

标签: javaspringspring-mvcweb-applicationsspring-config

解决方案


将上下文视为组件的执行环境。

一个 servlet 容器(Web 服务器),托管 Web 应用程序,并在启动时为每个应用程序创建一个 ServletContext。因此,每个 Web 应用程序都存在于一个 servlet 上下文中,该上下文向它提供有关其环境(容器)的信息。这是 Java Servlet API。Tomcat 是这个 API 的一个实现。

现在,Spring 是我们可以用来创建 Web 应用程序的框架之一。当我们在容器中部署我们的 Web 应用程序时,它(容器)将创建一个 ServletContext,这就是我们的应用程序所在的位置。

每个 Spring 应用程序都有一个根上下文(ApplicationContext),其中可以存在一个或多个子上下文。WebApplicationContext 扩展了 ApplicationContext。可以有许多 WebApplicationContexts,即应用程序根上下文的子级。WebApplicationContext(添加了一个方法 getServletContext() )能够与它所在的 ServletContext 一起工作。

因此,在部署在容器中的基于 Spring 的 Web 应用程序中:

容器 --contains 1..n--> ServletContext --contains 1--> ApplicationContext --contains 1..n--> WebApplicationContext


推荐阅读