Redis习惯使用 Json格式来存储了,spring-session 2.0 开始网上找的方法已经都不适用了,文档里也没说清楚,通过分析源码最后解决。
这里简单介绍一下我的解决方法
1、pom依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2、配置yml
server:
port: 8080
servlet:
session:
timeout: 1d
spring:
session:
store-type: redis
redis:
flush-mode: on_save
namespace: session
redis:
port: 6379
host: ip
password: pwd
database: 1
timeout: 1s
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1ms
3、自定义SessionConfiguration 类
import lombok.extern.log4j.Log4j2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
@Log4j2
@Configuration
public class SessionConfiguration {
@Bean("springSessionDefaultRedisSerializer")
public RedisSerializer<Object> defaultRedisSerializer(){
log.debug("自定义Redis Session序列化加载成功");
return valueSerializer();
}
private RedisSerializer<Object> valueSerializer() {
return new GenericJackson2JsonRedisSerializer();
}
}