【问题标题】:Spring WAR file use by multiple users多个用户使用 Spring WAR 文件
【发布时间】:2015-02-03 07:08:00
【问题描述】:

当我们部署一个 Spring Web 应用程序时。网络服务器如何处理多个用户对 Spring 中定义的同一个 bean 的请求?如果是单例 bean,是否只为多个用户请求创建一个 bean? 多个用户的请求如何使用单个 WAR 文件?

【问题讨论】:

    标签: spring war


    【解决方案1】:

    我从一些堆栈中引用了以前的问题.. :)

    Spring 中的 Singleton bean 和 Singleton 模式是完全不同的。单例模式表示每个类加载器只会创建一个特定类的一个实例。

    Spring 单例的范围被描述为每个容器每个 bean。它是每个 Spring IoC 容器对单个对象实例的 bean 定义范围。 Singleton 中 Spring 中的默认作用域。

    虽然默认作用域是单例,但是你可以通过指定元素的scope属性来改变bean的作用域。

    每个网络请求都会生成一个新线程,如该线程中所述。

    Spring 管理不同的范围(原型、请求、会话、单例)。如果两个同时请求访问一个单例 bean,则该 bean 必须是无状态的(或至少同步以避免问题)。如果您访问范围请求中的 bean,则每个请求都会生成一个新实例。 Spring 为您管理这个,但您必须小心并为您的 bean 使用正确的范围。通常,您的控制器是单例,但 AppModel 必须是范围请求,否则您将遇到两个同时请求的问题。这个帖子也可以帮助你。

    关于您的最后一个问题“这个魔法是如何发生的?”,答案是“方面/代理”。 Spring 创建代理类。你可以想象 Spring 会为你的 AppModel 类创建一个代理。只要您尝试在控制器中访问它,Spring 就会将方法调用转发到正确的实例。

    参考这些链接 link 1 link 3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-23
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 2017-05-22
      相关资源
      最近更新 更多