从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”的文件用作该调度程序的上下文。顺便说一句,为分派器创建的每个此类上下文都将成为根上下文的子级。
编辑:要回答你的新问题: