【spring-session】介绍

前言

  • spring-session 2.0.10.RELEASE
  • 项目地址: https://spring.io/projects/spring-session
  • 文档地址: https://docs.spring.io/spring-session/docs/2.0.10.RELEASE/reference/html5/

介绍

spring-session 在无需绑定 web 容器的情况下提供对集群 session 的支持。并提供对以下情况的透明集成:

  • HttpSession:允许替换 web 容器的 HttpSession
  • WebSocket:使用 WebSocket 通信时,提供 Session 的活跃
  • WebSession:允许以应用中立的方式替换 webflux 的 webSession

WebSocket 和 WebSession 介绍略。

Spring Session 替换 HttpSession 得到什么好处呢?

  • 集群会话 : Spring Session 使支持集群会话变得很简单,而无需绑定到特定于应用程序容器的解决方案。

  • RESTful API : Spring Session 允许在标头中提供会话 ID 以使用 RESTful API

spring-session 如何替换 HttpSession

  • 添加一个 Filter(SessionRepositoryFilter)。
  • 在 Filter 中,将 request 和 response 替换为,wrappedRequest(SessionRepositoryRequestWrapper)和 wrappedResponse(SessionRepositoryResponseWrapper)。
  • wrappedRequest 负责将 session 替换为 HttpSessionWrapper。
  • HttpSessionWrapper 为 Adapter , 指向一个 org.springframework.session.Session 。
  • 如果 org.springframework.session.Session 的实现为 RedisSession ,则在 redis 中保存 session。其它实现以此类推。

来张图:
传统 Web 容器 Session 和 spring-session
在这里插入图片描述

示例

官方提供的示例够全的:https://docs.spring.io/spring-session/docs/2.0.10.RELEASE/reference/html5/#samples。

  • spirng boot 示例:https://docs.spring.io/spring-session/docs/2.0.10.RELEASE/reference/html5/guides/boot-redis.html
  • 使用 srping 注解配置的示例:https://docs.spring.io/spring-session/docs/2.0.10.RELEASE/reference/html5/guides/java-redis.html
  • 使用 spring xml 配置的示例:https://docs.spring.io/spring-session/docs/2.0.10.RELEASE/reference/html5/guides/xml-redis.html
posted @ 2024-06-27 10:40  CharyGao  阅读(35)  评论(0)    收藏  举报