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

12 浏览
0 Comments

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

根据XmlWebApplicationContext的javadoc:

默认情况下,根上下文的配置将来自于"/WEB-INF/applicationContext.xml",而命名空间为"test-servlet"的上下文的配置将来自于"/WEB-INF/test-servlet.xml"(例如,对于servlet名称为"test"的DispatcherServlet实例)。

Spring上下文是什么意思?

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

什么是命名空间?

更新:

一些后续问题:

  1. Spring的ApplicationContext是什么 - 它是保存在配置XML文件中定义的Bean的"东西"吗?
  2. 查看ContextLoaderListener的代码,它似乎加载了在配置XML文件中定义的数据。但是我的Spring Web应用在没有定义此侦听器或任何其他侦听器的情况下也能工作。这是为什么?
  3. 在什么情况下有多个Spring的DispatcherServlet实例是有意义的?
  4. 根上下文(来自applicationContext.xml的数据)适用于每个DispatcherServlet实例,而其他上下文(例如来自test-servlet.xml的数据)仅适用于相关的DispatcherServlet(即test)吗?
0
0 Comments

在Spring MVC中,"context"表示一个Spring的ApplicationContext。在Web应用程序中,"root context"是指被Web应用程序加载和使用的主要上下文。通常情况下,您可以通过一个ContextLoaderListener来启动root context。root context并不是一种"类型"的上下文,它只是上下文所扮演的一个角色。在一个Web应用程序中只有一个root context,其他上下文通常是root context的子上下文。

而在这里的"namespace"指的是Spring的DispatcherServlet的作用域。如果在web.xml中将servlet命名为"test",那么根据约定,Spring将会寻找一个名为"test-servlet.xml"的文件作为该dispatcher的上下文。每个为dispatcher创建的这样的上下文都成为root context的子上下文。

关于您的新问题:

1.请点击我回答中的第一行链接了解ApplicationContext。如果您在链接中找不到答案,请在Stack Overflow上提问。

2.root context是可选的。如果您没有定义ContextLoaderListener,那么您就没有root context。当您使用DispatcherServlet时,它会启动自己的ApplicationContext,并从那里获取所需的bean。

3.我不知道有没有一个这样的需求。我猜想,如果您的应用程序的某些URL资源之间需要极不同的配置,那可能会引导您这样做。

4.是的。准确地说,root context是为DispatcherServlet启动的任何上下文的父上下文。父上下文中的bean可以通过子上下文访问和使用,但反过来不成立。

关于关于上下文的通用含义以及它在Spring中的关联,可以用另一个类比来解释。

0
0 Comments

在一个Web应用程序中,通常将架构划分为不同的层,如流行的MVC结构。因此,一个Web应用程序基本上由处理客户端请求的层(即HTTP请求)和服务这些请求的层组成。

简而言之:处理HTTP请求的类,即映射到URL的控制器,属于test-servlet.xml。这被称为WebapplicationContext,其中仅包含处理客户端请求所需的主要bean。

接下来是包含业务逻辑的Service/Dao层。执行此类逻辑的bean是在ApplicationContext对象下加载的。

现在你可能会问为什么将这些东西分开为两个文件或两个不同的对象。

这是因为,一个应用程序可能具有相同的业务逻辑,可以被使用不同协议的多个客户端使用。您可以使用相同的服务层来处理RMI和HTTP调用。

因此,Spring创建了一个作为ApplicationContext启动的父上下文。如果您的应用程序处理Web请求,可以创建一个具有自己Webapplicationcontext的分发器servlet,并将其初始化为父上下文的子级。

因此,所有父级bean可以在子级中引用并进行覆盖,但反之则不行。

文章整理了Web应用程序的架构以及上下文和命名空间的概念。上下文(context)是Spring框架中用于管理和配置应用程序的对象,而命名空间(namespace)用于将特定的功能和配置与应用程序关联起来。通过这样的整理,读者可以更好地理解Spring MVC架构中上下文和命名空间的作用。

0