使用springSession完成分布式session
系列文章目录
文章目录
- 系列文章目录
- 使用springSession完成分布式session
使用springSession完成分布式session
原文链接 https://zhhll.icu/2021/框架/springmvc/分布式session/使用springSession完成分布式session/
分布式session可以使用spring session来进行实现,由于HttpRequest的Wrapper功能,许多HttpRequest中的方法都可以进行替换来进行自定义的重写,所以可以将getSession方法重写掉,然后进行自定义的session存储和处理,当然了,你能想到的,一般都是早就有人已经实现了,就不重复造轮子了
spring session已经实现出了上述功能,只需要进行配置就可以实现啦
这里演示的是将session存储在redis中,所需要的依赖
<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>1.3.5.RELEASE</version></dependency><dependency><groupId>biz.paluch.redis</groupId><artifactId>lettuce</artifactId><version>3.4.2.Final</version></dependency>
在spring的配置文件中配置
<!-- 测试spring-sessionhttpSession存储在redis-->
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
<!-- redis的连接工厂 -->
<bean class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory"><constructor-arg name="host" value="localhost"/><constructor-arg name="port" value="6379"/>
</bean>
当然只是配置这个是不够的,RedisHttpSessionConfiguration中根本就没有提到HttpServletRequestWrapper呀,当然还要配置配置一个过滤器
<!-- filter的名字不要改变,这个DelegatingFilterProxy类是根据名字去加载bean的 -->
<filter><filter-name>springSessionRepositoryFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping><filter-name>springSessionRepositoryFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>ERROR</dispatcher>
</filter-mapping>
为什么要使用DelegatingFilterProxy,而不直接去使用springSessionRepositoryFilter呢?因为springSessionRepositoryFilter没有默认构造器,需要传入参数sessionRepository,而这个sessionRepository是spring管理的一个bean,那就只好也将springSessionRepositoryFilter作为一个bean去处理吧,所以就使用DelegatingFilterProxy,它的功能就是会从spring上下文中去查找
启动项目之后正常的向往常一样的操作session,就可以看到redis中存有session了
127.0.0.1:6379> keys *
1) "spring:session:expirations:1623743940000"
2) "spring:session:sessions:3fbe4ab6-b9ff-4065-8c07-b0ed7f02a4db"
3) "spring:session:sessions:expires:3fbe4ab6-b9ff-4065-8c07-b0ed7f02a4db"
使用springSession完成分布式session相关推荐
- SpringSession实现分布式Session
基于Redis存储Session的实现流程图如下所示: 1. 引入相关依赖 <!--spring data redis 依赖--><dependency><groupId ...
- SpringBoot实现分布式session
实现分布式session 为什么要实现分布式session session 我们都知道它是保存在服务器的,当我们的项目做了负载均衡,如果在session中存了数据(用户登录的信息等等数据),那么就有可 ...
- redisson集成spring-session和shiro实现分布式session
一.pom <!-- Shiro权限验证 --><dependency><groupId>org.apache.shiro</groupId><a ...
- spring+redis自主实现分布式session(非spring-session方式)
为什么80%的码农都做不了架构师?>>> 背景:最近对一个老项目进行改造,使其支持多机部署,其中最关键的一点就是实现多机session共享.项目有多老呢,jdk版本是1.6,s ...
- SpringSession+redis解决分布式session不一致性问题
七.案例实战:SpringSession+redis解决分布式session不一致性问题 步骤1:加入SpringSession.redis的依赖包 <dependency><gro ...
- 【49.Auth2.0认证与授权过程-微博开放平台认证授权过程-百度开放平台认证授权过程-社交登录实现(微博授权)-分布式Session问题与解决方案-SpringSession整合-Redis】
一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...
- 分布式Session分析与代码实战(SpringSession)
一.介绍 1.什么是session? cookie? session对象存储在服务器端内存中,cookie存储在客户端浏览器中.一般是客户端请求服务器,服务器端生成session对象,将session ...
- 170222、使用Spring Session和Redis解决分布式Session跨域共享问题
使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...
- 使用Spring Session和Redis解决分布式Session跨域共享问题
大家可以关注一下公众号"Java架构师秘籍" 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载 ...
最新文章
- 在windows上搭建Apache+Trac+Subversion
- qt 一个线程接收数据 主线程更新界面 会造成界面退出 怎么解决_打造一个好产品...
- spring aop示例_具有AOP事务管理的Spring ORM示例
- 预付费客户抄表管理系统的应用
- 用eXeScope个性化自己的Win7
- 【博弈论】耶鲁大学公开课--博弈论Problem Set 1--Solution
- CentOS 官网下载 iso 镜像
- Python基础语法——基础语法、变量
- c语言实验报告中致谢词,实验报告致谢词范文
- 【Flutter实战】定位装饰权重组件及柱状图案例
- 技术点:vue3 使用 ref 绑定 router-view,想调取某个子路由中的方法来重载数据
- 织梦主动提交_织梦CMS网站如何自动提交百度快速收录(详细教程)
- Cobar Client的使用
- ML入门20220706
- 论文解读 | Fusing wearable imus with multi-view images for human pose estimation: A geometric approach
- 一个简单的文本聚类实现(python)
- 内控遇到的问题及解决方法
- 敏捷开发“松结对编程”实践之一:人员结构篇(大型研发团队,学习型团队,139团队,师徒制度)
- Java开发常用的Linux命令
- 第三代计算机 ibm360,IBM System/360诞生44周年
热门文章
- 写文案,是责任与担当
- python银行账户资金交易管理_python 实现网上商城,转账,存取款等功能的信用卡系统...
- Portfolio与Program的区别;PM/Project与PMO的区别
- CentOS7.3临时与永久挂载硬盘
- BETWEEN AND的边界值问题
- java架构学习——5. 线程池原理剖析锁的深度化
- 『Linux』第九讲:Linux多线程详解(三)_ 线程互斥 | 线程同步
- c语言中在按回车键继续的这句话后面大什么程序可移执行,2018年C语言程序设计期末考试试题及其答案...
- 用CD74HC4067高速模拟开关模块实现16路流水灯控制(Arduino UNO)
- 09-MySQL reids