Spring WAR文件由多个用户使用

时间:2014-12-05 06:48:01

标签: spring war

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

1 个答案:

答案 0 :(得分:0)

我从以前的问题中对一些堆栈进行了评论.. :)

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

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

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

每个Web请求都会生成一个新线程,如本主题中所述。

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

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

参考这些链接 link 1 link 3