首先确保使用redis正常。
配置添加使用存储类型
# spring session使用存储类型
spring.session.store-type=redis
pom.xml中要引入依赖
org.springframework.session
spring-session-data-redis
2.1.5.RELEASE
org.springframework.security
spring-security-web
org.springframework.security
spring-security-core
否则会引发配置文件读取错误
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会话,在使用Springboot时利用Redis来支持Web应用程序的httpsession。
1,更新依赖项
在使用Spring Session之前,必须确保依赖正确。我们假设您使用的是一个工作的SpringBoot的Web应用程序。如果使用maven,则必须添加以下依赖项:
pom.xml
org.springframework.session
spring-session-data-redis
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部分。