Spring Session使用redis的各种问题

首先确保使用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 Session - Spring Boot

这个指南介绍如何使用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部分。

 

你可能感兴趣的:(Spring Session使用redis的各种问题)