【发布时间】:2011-12-15 08:59:54
【问题描述】:
有人可以列出 Request 、 Session 和 Global-Session 范围 bean 的实际用例吗?在大多数项目中,我一直在使用单例和原型。我知道请求范围 bean 是按请求实例化的,并且在会话范围 bean 中,bean 是在会话开始时实例化的。
请大家多多指教。
【问题讨论】:
标签: spring spring-mvc
有人可以列出 Request 、 Session 和 Global-Session 范围 bean 的实际用例吗?在大多数项目中,我一直在使用单例和原型。我知道请求范围 bean 是按请求实例化的,并且在会话范围 bean 中,bean 是在会话开始时实例化的。
请大家多多指教。
【问题讨论】:
标签: spring spring-mvc
到目前为止,我们使用 request scoped beans 来获取应该只在一个页面上有效的信息,例如搜索结果或订单确认。在重新加载页面之前,该 bean 将一直有效。
会话范围的 bean 可用于在会话关闭(超时或注销)时使身份验证信息失效。您也可以在此处存储您不想在每个请求中重新加载的其他用户信息。或者我们的另一个用例是在会话范围中存储一个对话范围,我们使用它来在请求之间保留信息,但我们可以分配一个自定义超时和失效条件。
几乎所有需要在请求后可用的信息都需要存储在会话范围内。我们使用的唯一例外是 视图范围,它将信息存储在页面的视图映射中,以便在 ajax 请求后可用,例如在向导中。
然而,单例范围意味着该信息在每个应用程序中仅存在一次,因此如果两个用户请求您的页面,他们将访问相同的信息。这对控制器很有用,因为它们不应该存储数据。
原型作用域与使用 new 初始化对象相同,因为它是在每次注入时创建的。我们目前根本不使用它。
【讨论】: