rap*_*apt 41 spring spring-mvc
来自XmlWebApplicationContext javadoc:
默认情况下,配置将从"/WEB-INF/applicationContext.xml"获取根上下文,而"/WEB-INF/test-servlet.xml"获取具有命名空间"test-servlet"的上下文(如对于具有servlet-name"test"的DispatcherServlet实例.
Spring语境是什么意思?
什么是根背景?还有哪些其他类型的Spring上下文?
什么是命名空间?
更新:
一些后续问题:
什么是Spring ApplicationContext - 它是否包含在配置XML文件中定义的bean?
查看ContextLoaderListener的代码,看起来它加载了配置XML文件中定义的数据.但我的Spring Web应用程序无需定义此侦听器或任何其他侦听器.怎么会这样?
在什么情况下有多个Spring的DispatcherServlet实例是有意义的?
根上下文(来自applicationContext.xml的数据)是否适用于DispatcherServlet的每个实例,而其他上下文(例如来自test-servlet.xml的数据)仅适用于相关的DispatcherServlet(即测试)?
Rya*_*art 26
"Spring context"= Spring ApplicationContext.
就Web应用程序而言,"根上下文"是指由webapp加载和使用的主要上下文.通常,您将使用ContextLoaderListener启动根上下文.
根上下文实际上并不是一种"类型"的上下文.它只是一个上下文所扮演的角色.您在webapp中有一个根上下文.其他上下文不是根本上下文.他们通常是根本背景的孩子.
这里的命名空间是指Spring的DispatcherServlet实例的范围.所有它说的是,如果你在web.xml中命名你的servlet"test",那么按照惯例,Spring将寻找一个名为"test-servlet.xml"的文件作为调度程序的上下文.顺便提一下,为调度程序创建的每个这样的上下文都成为根上下文的子代.
编辑:回答您的新问题:
在Web应用程序中,该体系结构通常分为多个层,如流行的MVC结构.因此,Web应用程序基本上包括处理客户端请求的层,即HTTPRequests和为这些请求提供服务的层.
总结一下:用于处理Http请求的类,即映射到url的控制器属于test-servlet.xml.这称为WebapplicationContext,仅包含主要用于处理客户端请求的bean.
现在,下一部分是Service/Dao层,它包含您的业务逻辑.执行此类逻辑的Bean将加载到ApplicationContext对象下.
现在你可能会问为什么他们将这些东西分成文件或两个不同的对象.
这是因为,应用程序具有相同的业务逻辑,可以由处理不同协议的多个客户端使用.您可以使用相同的服务层来处理RMI以及HTTP调用.所以Spring创建了一个父上下文,它作为ApplicationContext启动.然后,如果您的应用程序处理Web请求,您可以创建一个dispathcher servlet,它具有自己的Webapplicationcontext并初始化为父上下文的子级.因此,所有父bean都可以在子代中引用,并且可以覆盖,但反之亦然
归档时间: |
|
查看次数: |
24079 次 |
最近记录: |