You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Spring Session与Redis启动报RedisConnectionFactory缺失如何解决

问题原因

这个错误是典型的Bean初始化循环依赖问题:SecurityConfig作为Spring Security的核心配置类,初始化优先级非常高,你直接在类中通过字段注入RedisIndexedSessionRepository,会强制Spring在初始化SecurityConfig的阶段就实例化RedisIndexedSessionRepository,但此时Redis连接相关的Bean还未完成初始化,就会触发RedisConnectionFactory is required的报错,同时和Spring Session的自动配置逻辑形成循环引用。

解决方案

按以下步骤修改即可解决,同时保留最大会话数控制能力:

步骤1:移除SecurityConfig中的字段注入

删除类中声明的@Autowired private RedisIndexedSessionRepository redisIndexedSessionRepository;字段

步骤2:调整sessionRegistry Bean的注入方式

将RedisIndexedSessionRepository作为Bean方法的入参传入,Spring会在实际需要创建SessionRegistry实例时才自动注入依赖,避免提前触发初始化:

@Bean
public SpringSessionBackedSessionRegistry<?> sessionRegistry(RedisIndexedSessionRepository redisIndexedSessionRepository) {
    return new SpringSessionBackedSessionRegistry<>(redisIndexedSessionRepository);
}

可选补充:如果仍有初始化顺序问题

可以给sessionRegistry Bean添加@Lazy注解,强制延迟初始化:

@Bean
@Lazy
public SpringSessionBackedSessionRegistry<?> sessionRegistry(RedisIndexedSessionRepository redisIndexedSessionRepository) {
    return new SpringSessionBackedSessionRegistry<>(redisIndexedSessionRepository);
}
额外检查项

如果修改后仍有Redis连接相关报错,确认以下配置:

  • 已引入spring-boot-starter-data-redis、spring-session-data-redis以及连接池依赖commons-pool2
  • application.yaml中的Redis连接配置(host、port、password(如果有设置))正确,本地Redis服务正常运行

内容的提问来源于stack exchange,提问作者stringy05

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:45:01