美文网首页
SpringSession 架构设计

SpringSession 架构设计

作者: 墨色尘埃 | 来源:发表于2019-11-25 10:29 被阅读0次

SpringSession由核心模块和具体存储方式相关联的实现模块构成。
核心模块包含了 SpringSession的基本抽象和 API。

SpringSession有两个核心组件:Session和SessionRepository。SpringSession简单易用,通过SessionRepository来操作Session。当建立会话时,创建Session,将一些用户信息(例如用户 ID)存到Session中,并通过SessionRepository 将Session 持久化。当会话重新建立的时候,可以获取到Session中的信息。同时后台维护了一个定时任务,通过一些巧妙的方式,将过期的Session通过SessionRepository删除掉。下面详细介绍一下这两个核心组件。

Redis存储Session

  1. 使用@EnableRedisHttpSession
  2. SessionRepository(无需手动注入,使用@EnableRedisHttpSession注解已经默认注入了SessionRepository)

RedisHttpSessionConfiguration类中发现注入了一个sessionRepository 类,因为是封装在RedisHttpSessionConfiguration类中,所以如果直接使用注解@EnableRedisHttpSession,就相当于已经注入了sessionRepository类,不需要在外部配置类RedisConfig中再手动添加。

image.png

Spring默认实现的Session

  1. 使用@EnableSpringHttpSession
  2. 注入SessionRepository(需手动注入)

也注入了sessionRepository类,但是因为SpringHttpSessionConfiguration类中没有注入sessionRepository类,所以需要在外部配置类HttpSessionConfig中手动添加

手动注入的.png

Spring Session Strategy 详解

SessionRepository作用:当建立会话时,创建Session,将一些用户信息(例如用户 ID)存到Session中,并通过SessionRepository 将Session 持久化。

HeaderHttpSessionStrategy作用:在 HTTP 请求头中设置设置我们的 sessionId,以及从请求头中获取我们的 sessionId

CookieHttpSessionStrategy作用:提供通过 cookie 的方式来传递 sessionId。cookie 参数名默认为 SESSION

SessionRepository结构图

SessionRepository结构图.png

HttpSessionStrategy结构图

HttpSessionStrategy结构图.png

session实现方式

session实现方式.png

相关文章

网友评论

      本文标题:SpringSession 架构设计

      本文链接:https://www.haomeiwen.com/subject/pqsdwctx.html