Spring Session使用redis的各种问题

本文介绍了在Spring Boot应用中使用Spring Session结合Redis进行Session管理的方法。首先,需配置Spring Session存储类型为redis,并在pom.xml中引入相关依赖。解决不能序列化的问题,需确保对象实现Serializable接口。接着,提供了从官方文档翻译的使用指南,包括更新Spring Boot的依赖项和配置application.properties文件。最后,通过添加@EnableRedisHttpSession注解启用Redis Session,并可自定义更多属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先确保使用redis正常。

配置添加使用存储类型

# spring session使用存储类型
spring.session.store-type=redis

pom.xml中要引入依赖

        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
            <version>2.1.5.RELEASE</version>
        </dependency>
        <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-core</artifactId>
            </exclusion>
        </exclusions>

否则会引发配置文件读取错误

Caused by: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$ServletSessionConfiguration] from ClassLoader [sun.misc.Launcher$AppClassLoader@3d4eac69]

不能序列化问题

org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type

需要对象继承 implements Serializable 什么都不用改只要继承就可以。

一下使用指南翻译来之https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-redis.html

Spring Session - Spring Boot

这个指南介绍如何使用Spring会话,在使用Springboot时利用Redis来支持Web应用程序的httpsession。

1,更新依赖项

在使用Spring Session之前,必须确保依赖正确。我们假设您使用的是一个工作的SpringBoot的Web应用程序。如果使用maven,则必须添加以下依赖项:

pom.xml

<dependencies>
	<!-- ... -->

	<dependency>
		<groupId>org.springframework.session</groupId>
		<artifactId>spring-session-data-redis</artifactId>
	</dependency>
</dependencies>

SpringBoot为Spring Session模块提供依赖性管理,因此不需要显式声明依赖性版本。

2,SpringBoot配置

在添加了所需的依赖项之后,我们可以创建SpringBoot配置。得益于自动配置支持,设置由redis支持的Spring会话非常简单,只需向application.properties添加配置属性,如下所示:

src/main/resources/application.properties

spring.session.store-type=redis # Session store type.

接下来在应用程序main函数处添加@EnableRedisHttpSession 。这将创建一个名为SpringSessionRepositoryFilter的SpringBean过滤器。过滤器负责替换掉由SpringBoot支持的httpsession实现。

使用application.properties可以进一步定制其他属性,如下所示:

src/main/resources/application.properties

# Session timeout. If a duration suffix is not specified, seconds is used.
server.servlet.session.timeout= 3600
# Sessions flush mode.
spring.session.redis.flush-mode=on-save
# Namespace for keys used to store sessions.
spring.session.redis.namespace=spring:session

有关更多信息,请参阅Springboot文档的SpringSession部分。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值