5

好的,春季大师……为我打破这个。在阅读有关 Spring MVC 的文档时,我遇到了这样的声明:

"....Spring 中的ApplicationContext 实例可以是作用域的。在Web MVC 框架中,每个DispatcherServlet 都有自己的WebApplicationContext,它继承了根WebApplicationContext 中已经定义的所有bean。这些继承的bean 可以在特定于servlet 的情况下被覆盖范围,并且可以在给定 servlet 实例的本地定义新的特定于范围的 bean。”

Spring 文档参考

基于此,我有几个问题:

  1. 该语句暗示可以有多个 DispatcherServlet 实例。这是否完全不正确,因为在 Web 应用程序中,只有一个 Servlet 实例可以(并且理想情况下应该)存在?
  2. 在上述语句的上下文中,“特定于 servlet 的范围”究竟是什么意思?
4

1 回答 1

2

这不是完全不正确吗

这转化为“偶尔为真”,我认为这不是您的意思。

在 Web 应用程序中,只有一个 Servlet 实例可以(并且理想情况下应该)存在

这并不完全不正确——只是大部分不正确。您<servlet>将部署描述符 ( web.xml) 的元素与实现该 servlet 的类混淆了。

确实,除了在某些有限的情况下,容器只允许每个 servlet实例化一个类的实例。但是,您可以有多个<servlet>条目都指定相同的类。

在上述语句的上下文中,“特定于 servlet 的范围”究竟是什么意思

作为一个不太好的例子(实际上,我认为很少有好的例子):您可能有一个支持多个客户端的应用程序,每个客户端都有不同的 URL 和不同的数据库,但在其他方面是相同的。您可以在根配置中定义业务对象,在 web-app 配置中定义数据源。以及任何特定于客户端的配置 bean。

于 2012-09-02T16:10:08.763 回答