此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Session 3.4.0spring-doc.cn

Spring Session

罗伯·温奇;韦德兰·帕维奇;杰伊·布莱恩特;Eleftheria Stein-Kousathanaspring-doc.cn

Spring Session 提供了用于管理用户会话信息的 API 和实现。spring-doc.cn

Spring Session 提供了一个 API 和实现来管理用户的会话信息,同时也使支持集群会话变得轻而易举,而无需绑定到特定于应用程序容器的解决方案。 它还提供与以下各项的透明集成:spring-doc.cn

  • HttpSession:允许以应用程序容器中立的方式替换 ,并支持在标头中提供会话 ID 以使用 RESTful API。HttpSessionspring-doc.cn

  • WebSocket:提供在接收 WebSocket 消息时保持活动状态的能力HttpSessionspring-doc.cn

  • WebSession:允许以应用程序容器中立的方式替换 Spring WebFlux。WebSessionspring-doc.cn

了解 Spring Session 解决的问题

当用户与 Web 应用程序交互时,服务器会创建一个会话来跟踪他们的活动。 此会话可能会存储用户首选项、登录状态和购物车内容等信息。 但是,会话在分布式环境中可能会出现问题,因为它们通常存储在服务器的内存中。spring-doc.cn

为了更好地理解 Spring Session 解决的问题,让我们首先可视化下图:spring-doc.cn

内存中会话
图 1.内存中会话

在上图中,每个 Spring 应用程序都将其会话存储在只有自己才能访问它们的地方,通常在服务器的内存中,但这在分布式环境中可能是一个问题。 想象一下这样一种情况,Spring App #2 收到一个带有 Session #3 的请求,应用程序将无法读取 session 数据,因为它存储在 Spring App #1 的内存中。 为了解决这个问题,我们需要实现某种共享会话存储,如下图所示:spring-doc.cn

共享会话存储
图 2.共享会话存储

通过上述设置,会话可供有权访问会话存储的每个应用程序使用。spring-doc.cn

Spring Session 在应用程序和会话管理之间提供了一个抽象层。 它允许将会话数据存储在各种持久存储中,例如关系数据库、NoSQL 数据库等。spring-doc.cn

使用 Spring Session,您可以使用相同的 API 来管理会话,而不管使用的持久存储如何。 这使得在不更改应用程序代码的情况下更轻松地在 store 之间切换。 Spring Session 还提供了会话过期和不同 Web 应用程序之间的跨上下文通信等功能。spring-doc.cn

总体而言,Spring Session 简化了 Web 应用程序中用户会话的管理,使您可以更轻松地专注于构建其应用程序的核心功能。spring-doc.cn

以下是 Spring Session 的一些常见用例:spring-doc.cn

  • 分布式 Web 应用程序:如果您的 Web 应用程序分布在多个服务器上,则管理用户会话可能具有挑战性。 Spring Session 可以通过将会话数据存储在共享数据库或 Redis 中来提供帮助,允许所有服务器访问和更新会话数据。spring-doc.cn

  • 会话可伸缩性:在具有许多并发用户的大型 Web 应用程序中,将会话存储在服务器上的内存中可能会导致可伸缩性问题。 Spring Session 允许您将会话数据存储在持久存储中,从而提高可扩展性并降低内存不足错误的风险。spring-doc.cn

  • 会话备份和恢复:将会话数据存储在持久存储中还可以提供一种机制,用于在服务器发生故障或停机时备份和恢复会话数据。spring-doc.cn

Spring Session 社区

我们很高兴将您视为我们社区的一员。 以下部分提供了有关如何与 Spring Session 社区交互的更多信息。spring-doc.cn

支持

您可以通过在 Stack Overflow 上使用 spring-session 标签提问来获得帮助。 同样,我们鼓励通过在 Stack Overflow 上回答问题来帮助他人。spring-doc.cn

源代码

您可以在 GitHub 上找到源代码,网址为 github.com/spring-projects/spring-session/spring-doc.cn

问题跟踪

我们在 GitHub 问题中跟踪问题 github.com/spring-projects/spring-session/issuesspring-doc.cn

贡献

我们感谢拉取请求spring-doc.cn

许可证

Spring Session 是在 Apache 2.0 许可下发布的开源软件。spring-doc.cn

最低要求

Spring Session 的最低要求是:spring-doc.cn

从本质上讲,Spring Session 仅对 . 有关在没有任何其他 Spring 依赖项的情况下使用 Spring Session 的示例,请参阅 hazelcast 示例应用程序。spring-jcl