Spring-MVC:什么是“上下文”和“命名空间”?
从XmlWebApplicationContext
javadoc:
默认情况下,配置将从“ /WEB-INF/applicationContext.xml”获取根上下文,从“ /WEB-INF/test-
servlet.xml”获取具有名称空间“ test-servlet”的上下文(例如Servlet名称为“
test”的DispatcherServlet实例)。
Spring上下文是什么意思?
根上下文是什么?还有其他哪些Spring上下文?
什么是名称空间?
一些后续问题:
什么是Spring ApplicationContext-它是否包含保存在配置XML文件中定义的bean的“东西”?
查看ContextLoaderListener的代码,看起来它加载了在配置XML文件中定义的数据。但是我的Spring Web应用程序无需定义此侦听器或任何其他侦听器即可工作。怎么会这样?
在什么情况下,拥有多个Spring的DispatcherServlet实例有意义吗?
根上下文(来自applicationContext.xml的数据)是否适用于DispatcherServlet的每个实例,而其他上下文(例如,来自test-servlet.xml的数据)仅适用于相关的DispatcherServlet(即test)?
回答:
“ Spring上下文” = Spring
ApplicationContext。
就Web应用程序而言,“根上下文”是指Web应用程序加载和使用的主要上下文。通常,您将使用ContextLoaderListener启动根上下文。
根上下文实际上不是上下文的“一种”。它只是上下文所扮演的角色。Web应用程序中有一个根上下文。其他上下文不是根上下文。它们通常是根上下文的子级。
这里的命名空间是指Spring的DispatcherServlet实例的范围。就是说,如果您在web.xml中将servlet命名为“
test”,那么按照惯例,Spring将查找名为“ test-
servlet.xml”的文件用作该调度程序的上下文。顺便提及,为分派器创建的每个这样的上下文都成为根上下文的子级。
要回答您的新问题:
- 跟随我答案第一行中的链接以了解ApplicationContext。如果您有未在此处回答的问题,建议您发布一个新的SO问题。
- 根上下文是可选的。如果您没有定义ContextLoaderListener,那么您就没有根上下文。当您使用DispatcherServlet时,它将启动自己的ApplicationContext,并从那里获取所需的bean。
- 我不知道一个人从头顶掉下来。我想如果您的应用程序中某些URL资源之间需要完全不同的配置,那可能会促使您这样做。
- 是。为了用适当的术语表述,根上下文是为DispatcherServlet启动的任何上下文的父上下文。可以通过子上下文访问父上下文中的Bean,但事实并非如此。
以上是 Spring-MVC:什么是“上下文”和“命名空间”? 的全部内容, 来源链接: utcz.com/qa/414060.html