问题描述

异常栈栈底

Caused by: java.lang.IllegalStateException: RedisConnectionFactory is requiredat org.springframework.util.Assert.state(Assert.java:76) ~[spring-core-5.2.11.RELEASE.jar:5.2.11.RELEASE]at org.springframework.data.redis.core.RedisAccessor.afterPropertiesSet(RedisAccessor.java:38) ~[spring-data-redis-2.3.5.RELEASE.jar:2.3.5.RELEASE]at org.springframework.data.redis.core.RedisTemplate.afterPropertiesSet(RedisTemplate.java:127) ~[spring-data-redis-2.3.5.RELEASE.jar:2.3.5.RELEASE]at org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration.createRedisTemplate(RedisHttpSessionConfiguration.java:291) ~[spring-session-data-redis-2.3.1.RELEASE.jar:2.3.1.RELEASE]at org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration.sessionRepository(RedisHttpSessionConfiguration.java:120) ~[spring-session-data-redis-2.3.1.RELEASE.jar:2.3.1.RELEASE]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.11.RELEASE.jar:5.2.11.RELEASE]... 121 common frames omitted

官方文档

https://docs.spring.io/spring-session/docs/current/reference/html5/index.html#spring-security-concurrent-sessions

问题分析

关键异常信息

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.session.data.redis.RedisIndexedSessionRepository]: Circular reference involving containing bean 'org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration' - consider declaring the factory method as static for independence from its containing instance. Factory method 'sessionRepository' threw exception; nested exception is java.lang.IllegalStateException: RedisConnectionFactory is requiredat org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.2.11.RELEASE.jar:5.2.11.RELEASE]at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) ~[spring-beans-5.2.11.RELEASE.jar:5.2.11.RELEASE]... 120 common frames omitted

关键的关键

Circular reference involving containing bean

HttpSessionListener的Bean和Spring Session Redis自动配置出来的Bean在同一个配置类中,导致循环引用。

例如:

/*** @author ShenTuZhiGang* @version 1.0.0* @date 2021-02-25 10:45*/
@Configuration
@EnableRedisHttpSession
public class CustomRedisHttpSessionConfig {@Autowiredprivate FindByIndexNameSessionRepository sessionRepository;/*** SpringSessionBackedSessionRegistry是session为Spring Security提供的* 用于在集群环境下控制会话并发的会话注册表实现类*/@Beanpublic SpringSessionBackedSessionRegistry sessionRegistry() {return new SpringSessionBackedSessionRegistry(sessionRepository);}/*** httpSession的会话监听,*/@Beanpublic HttpSessionEventPublisher httpSessionEventPublisher() {return new HttpSessionEventPublisher();}
}

解决方案

拆分

/*** @author ShenTuZhiGang* @version 1.0.0* @date 2021-02-25 10:45*/
@Configuration
@EnableRedisHttpSession
public class CustomRedisHttpSessionConfig {/*** httpSession的会话监听,*/@Beanpublic HttpSessionEventPublisher httpSessionEventPublisher() {return new HttpSessionEventPublisher();}
}

其他的放在 Spring Security 配置类中

参考文章

How to isolate spring boot app redis and spring boot session global redis

Spring Security集成Spring Session并存储session到Redis中,报错: Circular reference involving containing bean

Spring Boot——Spring Session Redis整合Spring Security时错误【RedisConnectionFactory is required】解决方案相关推荐

  1. Spring Boot Cache使用与整合

    参考: 史上最全的Spring Boot Cache使用与整合 Spring Cache扩展:注解失效时间+主动刷新缓存 项目地址 使用本地Caffeine缓存 引入依赖包 <dependenc ...

  2. spring boot 1.5.4 整合redis、拦截器、过滤器、监听器、静态资源配置(十六)

    上一篇:spring boot 1.5.4 整合webService(十五) 1      Spring Boot整合redis和缓存 Spring Boot中除了对常用的关系型数据库提供了优秀的自动 ...

  3. spring boot 1.5.4 整合 mybatis(十二)

    上一篇:spring boot 1.5.4 整合log4j2(十一) Spring Boot集成Mybatis 更多更详细的配置参考文件:application.properties和<Spri ...

  4. Spring Boot之基于Redis实现MyBatis查询缓存解决方案

    转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...

  5. Spring Boot 学习之路之 Spring Security(二)加入mybatis

    上一篇 Spring Security 基础配置:  http://t.csdn.cn/m9oq5​​​​​​​ 在上文Spring Boot 学习之路之 Spring Security(一)中完成了 ...

  6. Spring Boot (三)集成spring security

    项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot (三)集成spring security,标记地址: htt ...

  7. 响应式久草编程基础教程:久草Spring Boot 与 Lettuce 在线整合

    本文主要介绍响应式编程访问 Redis,以及 Spring Boot 与 Lettuce 的整合使用. Lettuce 是可扩展性线程安全的 Redis 客户端,用于同步.异步和响应式使用.如果多个线 ...

  8. spring boot 分布式session实现

    spring boot 分布式session实现 主要是通过包装 HttpServletRequest 将 session 相关的方法进行代理. 具体是的实现就是通过 SessionRepositor ...

  9. Spring Boot中使用Redis数据库

    Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch, So ...

最新文章

  1. poj3169(差分约束+SPFA)
  2. 利用.net4.0的dynamic特性制造的超级简单的微信SDK
  3. 关于 SAP UI5 对服务器端渲染 Server Sider Render 的支持问题
  4. login组件的两种用法_Android-模块化、组件化、插件化、热修复-组件化-组件间的通信(本地,下沉,bus,路由)...
  5. redis中不同value类型的存取操作方式
  6. Python 正则表达式(一)
  7. html 音乐能连续播放吗,音乐在不同HTML页面的连续播放问题
  8. 如何应对冬季暴涨的体重
  9. CAM350自动开短路检查教程
  10. 黄色量能通达信指标公式!没有未来函数,不加密的副图指标!
  11. 浅析Promise的then方法
  12. 编译原理-LL(1)语法分析器
  13. 将接近传感器和环境光传感器封装在一起的优点
  14. unity——删除父物体下面的所有子物体
  15. 利用java查看本机的cpu、内存情况
  16. python自动控制原理_自动控制原理(山东联盟-中国石油大学(华东))知到答案2020年MOOCPython语言程...
  17. 西瓜直播弹幕阅读器 python
  18. 【c#】键盘事件(keypress keydown keyup)
  19. win7 matlab 读 grib2数据
  20. DreamPlan Plus for Mac(家装和景观设计软件)

热门文章

  1. C# Winform只能输入数字的TextBox---补充
  2. 正则表达式校验例子[原创]
  3. 我的世界1.7.10java下载安装_我的世界1.7.10正式版
  4. pptx和ppt计算机二级,计算机二级Ms office考试PPT考点总结.pptx
  5. 智能J IDEA键盘快捷键
  6. matlab 轴旋转图像,求助,二维图像如何绕轴旋转成为三维图像
  7. mysql sqlite 分页查询_php基于SQLite实现的分页功能示例
  8. mysql scws_php利用scws实现mysql全文搜索功能的方法,_PHP教程
  9. l2的最优回归_【机器学习】逻辑回归(非常详细)
  10. nvidia-smi:Failed to initialize NVML: Driver/library version mismatch