【问题标题】:Spring bean scopes: session and globalSessionSpring bean 作用域:session 和 globalSession
【发布时间】:2013-03-02 16:05:02
【问题描述】:

Spring框架中的session和globalSession有什么区别?

<bean id="exampleBean" class="com.test.baen.ExampleBean" scope="session"/>
<bean id="exampleBean" class="com.test.baen.ExampleBean" scope="globalSession"/>

根据我的研究,两者在 Web 感知 Spring ApplicationContext 的上下文中都是有效的。

现在,会话 bean 范围将一直保留到用户会话,但 globalSession bean 范围是否可以在整个应用程序中使用?

是应用范围吗?

我无法理解术语“全局 HTTP 会话”;它将在整个全局 HTTP 会话中可用吗?

【问题讨论】:

标签: java spring spring-mvc spring-ioc


【解决方案1】:

globalSession 是连接到 Portlet 应用程序的东西。当您的应用程序在 Portlet 容器中工作时,它由一定数量的 Portlet 构建而成。每个 portlet 都有自己的会话,但是如果您想为应用程序中的所有 portlet 存储全局变量,那么您应该将它们存储在 globalSession 中。此范围与基于 Servlet 的应用程序中的 session 范围没有任何特殊效果。

【讨论】:

  • 感谢您的澄清。为你 +1。
  • globalSession 听起来很像默认的单例。它们之间的主要区别是什么?
【解决方案2】:

根据 Spring 文档 ::

session - 将单个 bean 定义限定为 HTTP 会话的生命周期。仅在 Web 感知 Spring ApplicationContext 的上下文中有效。

全局会话 - 将单个 bean 定义限定为全局 HTTP 会话的生命周期。通常仅在 Portlet 上下文中使用时才有效。仅在 Web 感知 Spring ApplicationContext 的上下文中有效。

【讨论】:

    【解决方案3】:

    会话范围增加了一个 http 会话的 bean 定义,仅在应用程序上下文中有效。容器将为每个 http 会话创建一个新 bean。 全局会话范围添加了在 portlet 应用程序上下文中使用的全局 http 会话的 bean 定义。

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2019-12-16
      • 2015-06-29
      • 2017-06-27
      • 2017-09-02
      • 2019-07-11
      相关资源
      最近更新 更多