Spring-MVC:什么是“上下文”和“命名空间”?

2024-03-15

From XmlWeb应用程序上下文 http://javasourcecode.org/html/open-source/spring/spring-3.0.4/org/springframework/web/context/support/XmlWebApplicationContext.htmljavadoc:

默认情况下,配置将从“/WEB-INF/applicationContext.xml”获取根上下文,从“/WEB-INF/test-servlet.xml”获取命名空间“test-servlet”的上下文(例如对于 Servlet 名称为“test”的 DispatcherServlet 实例)。

Spring 上下文是什么意思?

根上下文是什么?还有哪些其他类型的 Spring 上下文?

什么是命名空间?

UPDATE:

一些后续问题:

  1. 什么是 Spring ApplicationContext - 它是保存配置 XML 文件中定义的 bean 的“东西”吗?

  2. 查看 ContextLoaderListener 的代码,它看起来像是加载配置 XML 文件中定义的数据。但我的 Spring Web 应用程序无需定义此侦听器或任何其他侦听器即可工作。怎么会这样?

  3. 在什么情况下拥有多个 Spring 的 DispatcherServlet 实例才有意义?

  4. 根上下文(来自 applicationContext.xml 的数据)是否适用于 DispatcherServlet 的每个实例,而其他上下文(例如来自 test-servlet.xml 的数据)仅适用于相关的 DispatcherServlet(即测试)?


“Spring 上下文” = aSpring应用上下文 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html.

“根上下文”,就 Web 应用程序而言,是指 Web 应用程序加载和使用的主上下文。通常,您将使用以下命令启动根上下文上下文加载监听器 http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/context/ContextLoaderListener.html.

根上下文并不是真正的“某种”上下文。这只是上下文所扮演的角色。您在 Web 应用程序中拥有一个根上下文。其他上下文不是根上下文。它们通常是根上下文的子级。

这里的命名空间是指Spring的DispatcherServlet实例的范围。它的意思是,如果您在 web.xml 中将 servlet 命名为“test”,那么按照惯例,Spring 将查找名为“test-servlet.xml”的文件来用作该调度程序的上下文。顺便说一句,为调度程序创建的每个这样的上下文都会成为根上下文的子上下文。

Edit:回答您的新问题:

  1. 请点击我的答案第一行中的链接来了解 ApplicationContext。如果您的问题没有在那里得到解答,我建议您发布一个新的问题。
  2. 根上下文是可选的。如果您没有定义 ContextLoaderListener,那么您就没有根上下文。当您使用 DispatcherServlet 时,它会启动自己的 ApplicationContext,并从那里获取所需的 bean。
  3. 我不知道我的头顶上有什么。我想,如果您的应用程序中的某些 URL 资源之间需要进行截然不同的配置,这可能会促使您这样做。
  4. 是的。用正确的术语来说,根上下文是为 DispatcherServlet 启动的任何上下文的父上下文。父上下文中的 Bean 可以通过子上下文访问,但反之则不然。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring-MVC:什么是“上下文”和“命名空间”? 的相关文章

随机推荐