Spring MVC中的WebApplicationContext是什么?它有什么用?

4uqofj5v  于 2023-01-13  发布在  Spring
关注(0)|答案(2)|浏览(110)

我知道Spring应用程序上下文是什么,但是我对Spring MVC中的Web应用程序上下文感到困惑。你们能帮助我吗?

  • 什么是Web应用程序上下文?
  • 为什么有这个必要?
  • 它是用来做什么的?
2skhul33

2skhul331#

您可以查看WebApplicationContext代码以了解更多信息:

public interface WebApplicationContext extends ApplicationContext {

   ServletContext getServletContext();
}

由于继承的原因,你可以简单地认为WebApplicationContext只是一种特殊的ApplicationContext,它只用于Web应用程序。因此,所有可以由ApplicationContext完成的事情也可以由WebApplicationContext完成。但是WebApplicationContext只是提供了一个额外的函数,允许你访问Servlet API规范定义的底层ServletContext
之所以有必要,主要是因为OOP的设计很好,如果我们不把它分成两个接口,而只是把getServletContext()添加到ApplicationContext中,用于所有的非web和web应用,那么对于非web应用,我们还需要把Servlet API JAR包含到我们的项目中,因为我们使得ApplicationContext依赖于Servlet API,这是很尴尬的。

nr9pn0ug

nr9pn0ug2#

Spring的官方文档包含了答案。
WebApplicationContext是普通ApplicationContext的扩展,具有Web应用程序所需的一些额外功能。它与普通ApplicationContext的不同之处在于它能够解析主题(请参见使用主题),并且它知道与哪个Servlet相关联(通过具有到ServletContext的链接)。WebApplicationContext被绑定在ServletContext中,通过在RequestContextUtils类上使用静态方法,如果需要访问WebApplicationContext,您总是可以查找它。
它用于促进Web服务器功能。文档还继续提到WebApplicationContext提供的特殊bean类型。例如,MultiPartResolver“解析多部分请求,例如支持处理从HTML表单上载的文件”。

相关问题