Servlet 上下文和 Spring 应用程序上下文的本质区别

St.*_*rio 3 java spring servlets

我正在阅读 spring 框架文档,现在我在应用程序范围概念。关于这个概念的文档是这样说的:

这有点类似于 Spring 单例 bean,但在两个重要方面有所不同: 它是每个 ServletContext 的单例,而不是每个 Spring ApplicationContext

对我来说,不清楚的是我们如何想象 Spring 应用程序上下文和 Servlet 上下文之间的关系。

我假设它们之间的关系有两种可能的情况:

一世

在此处输入图片说明

在此处输入图片说明

那么,Spring 应用程序上下文与 Servlet 上下文是如何关联的呢?是情况I还是情况II或两者都不是?

JB *_*zet 7

两者都不是。

ServletContext 是标准的 Java EE应用程序范围。每个部署的 web 应用程序都有一个且只有一个 servlet 上下文。

在这个 web 应用程序中,您可以有一个(通常)或多个 Spring 应用程序上下文:每个 Spring-MVC 调度程序 servlet 一个。