按照这里的示例我升级了 Spring Boot 3.2 应用程序以使用 Redis 作为会话存储。
我已经添加了所需的依赖项:
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
我设置了一些应用程序属性(yaml):
spring.session.redis.flush-mode: on_save
spring.session.redis.namespace: "spring:session"
spring.data.redis.host: "localhost"
spring.data.redis.port: 6379
我有一个正在运行的 Redis 服务器,可以在“127.0.0.1:6379”上连接。我可以通过
redis-cli
添加密钥,所以我知道 Redis 没问题。
但是,当我搜索 Redis 数据库时,我不会得到任何与 Spring Session 相关的密钥。由于身份验证有效,我假设会话仍然由 Tomcat 本身管理。
根据Spring会话配置文档应该创建了一个
springSessionRepositoryFilter
bean,但是这个bean没有配置。另外,上下文中没有RedisConnectionFactory
。
仅供参考:当使用
spring-session-jdbc
时,会话将按预期存储在 JDBC 数据库中。
有谁知道为什么 Spring Session 不会设置 Redis 进行存储,尽管我一步步按照文档操作?我是否需要添加一些文档中未提及的额外配置?
非常感谢您的帮助
因此,在花费了一个多小时的宝贵时间来找出问题所在之后,我在 YouTube 视频中发现了以下依赖项,相当随意地添加了:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
好吧,由于 Spring Boot 文档中从未提到过对这个包的依赖,我想知道:开发人员在他们的第二份工作中是否应该成为水晶球眼算命先生?我他妈怎么知道这是一个主要的必需依赖项?
如果你总结一下开发人员为了弄清楚如何让事情正常运行而花费的所有毫无意义的时间,只是因为文档很糟糕,我想你每个月的收入会达到数百万美元。没什么好说的了...