SpringBoot整合redis存储session--揭秘SpringSession的核心原理

核心原理

从@EnableRedisHttpSession这个注解入手开始分析 点进去发现

在这里插入图片描述
给我们导入了这个组件,继续点进去发现
在这里插入图片描述
RedisHttpSessionConfiguration这个类给容器中导入了RedisIndexedSessionRepository这个组件,这个组件就是redis操作session的类,也即session的增删改查相关操作都通过这个类来实现
在这里插入图片描述
再看RedisHttpSessionConfiguration继承了SpringHttpSessionConfiguration
在这里插入图片描述
点进SpringHttpSessionConfiguration这个类我们发现这个类给容器中导入了非常多的组件其中值得注意的是给容器中导入了这样一个组件
在这里插入图片描述
继续往下走:
在这里插入图片描述
在这里插入图片描述我们发现SessionRepositoryFilter实际上实现了javax.servlet.Filter,我们的每个请求都会经过这个filter

继续往下走:
在SessionRepositoryFilter中有这样一个方法doFilterInternal ,它将我们原生的请求和响应拿过来进行包装,将包装后的请求和响应应用到我们的整个执行链,这一段代码也就是springSession的核心原理

在这里插入图片描述
我们获取session 通常都是

HttpSession session = request.getSession();

它将我们的request进一步包装成 wrappedRequest 我们来看看他是如何包装的
点进SessionRepositoryRequestWrapper 我们发现它重写了一个方法
在这里插入图片描述

在这里插入图片描述
总结:
简单的用了一下装饰者模式,此处我用的是redis存储session,当然也可以使用其他存储session,基本原理都是一样

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值