【问题标题】:Spring DispatcherServlet Multiple InstancesSpring DispatcherServlet 多实例
【发布时间】:2012-08-27 13:21:29
【问题描述】:

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

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

Spring Docs Reference

基于此,我有几个问题:

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

【问题讨论】:

    标签: java spring


    【解决方案1】:

    这不是完全不正确的

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

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

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

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

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

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

    【讨论】:

    • 正如您在上面指出的,我用“不”纠正了我的错误,谢谢。无论如何,很好的解释。我认为这清楚了很多。但是,我仍然对为什么要在一个 Web 应用程序中拥有多个类似的 servlet 只是为了处理映射不同的请求而摸不着头脑。为什么不拥有不同的 Web 应用程序,每个应用程序都有不同的上下文路径?前一种情况(一个 Web 应用程序中有多个类似的 servlet 来处理不同的 url)难道不会让人头疼吗?
    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 2013-07-31
    • 1970-01-01
    • 2019-05-12
    • 2015-04-14
    • 1970-01-01
    • 2015-08-20
    • 2015-03-16
    相关资源
    最近更新 更多