2014-12-05 39 views
0

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

回答

0

我从一些堆栈审阅上流过以前的问题.. :)

辛格尔顿豆在春季和Singleton模式是完全不同的。 Singleton模式表示,每个类加载器都会创建一个特定类的唯一实例。

Spring单例的范围按每个bean的容器描述。这是每个Spring IoC容器对单个对象实例的bean定义范围。 Singleton中Spring的默认范围。

虽然默认范围是单例,但您可以通过指定元素的范围属性来更改bean的范围。

每个Web请求生成一个新的线程在此线程解释。

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

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

参考这些链接 link 1 link 3