原型作用域如何在Spring Web Application中工作?

时间:2018-09-10 08:05:29

标签: spring spring-mvc

我在Spring Web应用程序中使用原型作用域。在我的Web应用程序中,有多个用户。

a) How to work prototype scope in web application for multiple user.

b) How to work session scope in web application for multiple user.

我想关注

 c) I want each user have separate instances, which spring scope is better to use  for my web application.

2 个答案:

答案 0 :(得分:2)

要选择适当的范围,请首先注意以下定义:

  

Singleton::此作用域仅为每个Spring IoC容器单个实例提供Bean定义。

  • 用法:当您需要无状态bean时,请使用单例bean。
  • 现实世界中的示例:连接到数据库,数据访问对象或存储库
  

原型:这为单个bean定义提供了范围,以便在每次需要时创建新实例而无需考虑   会话。容器也无法管理完整的生命周期   豆。它启动,配置和组装原型Bean,然后   然后将其交给客户。

  • 用法::当bean带有状态(即其有状态)时。因此每个用户都有自己的状态。
  • 示例:实体。
  

请求:这为HTTP请求的bean定义提供了范围。

  • 用法:在请求过程中信息有效时。
  • 示例:请求的搜索数据
  

会话:这为HTTP会话提供了bean定义的范围。

  • 用法:在整个会话期间用户信息有效时。
  • 示例:购物卡数据,已授予的授权信息
  

全局会话::这为全局HTTP会话提供了bean定义的范围。

  • 用法:它或多或少类似于会话作用域,但是,如果您在门户网站应用程序中考虑此作用域,则可以在整个portlet之间共享Bean

答案 1 :(得分:1)

来自spring docs

a)Bean部署的非单一原型范围会在每次请求该特定Bean时(即,将其注入另一个Bean或通过一个Bean请求)创建一个新的Bean实例。容器上的程序化getBean()方法调用)

b)在会话范围内,Spring容器将在单个HTTP会话的生存期内创建一个bean的全新实例。

c)这取决于,如果您的bean具有来自已记录的用户详细信息会话的特定配置,则作用域将是正确的选择,如果您的bean将具有恒定的配置,那么您将选择单例作用域,原型作用域对于多线程处理很有用。因此,bean的范围取决于它的用途。我认为您没有提供足够的信息来帮助您选择应该选择的范围,但我希望我的技巧会有所帮助。