60

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 会话中可用吗?

4

3 回答 3

120

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

于 2013-03-14T10:56:51.050 回答
16

根据 Spring 文档::

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

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

于 2015-09-11T08:32:12.597 回答
1

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

于 2021-05-11T15:56:31.307 回答