SpringSession(springboot、redis和session整合)
官网:https://docs.spring.io/spring-session/docs/2.5.0/reference/html5/#samples
1、导入依赖
<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 整合 spring session 实现 session 共享-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
2、编写application.yml配置文件
spring:
redis:
host: 192.168.10.123
port: 6379
# 配置session
session:
#存储在redis中
store-type: redis
# 过期时间30分钟,可不要
timeout: 30m
3、配置类SessionConfig.java
可以不用配置,根据实际情况配置
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;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
@Configuration
public class SessionConfig {
@Bean
public CookieSerializer cookieSerializer(){
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
//设置cookie作用域
cookieSerializer.setDomainName("mall.com");
//可设置cookie的名字,默认SESSION
cookieSerializer.setCookieName("SESSION");
return cookieSerializer;
}
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
//使用JSON的序列化方式来序列化对象到Redis中
return new GenericJackson2JsonRedisSerializer();
}
}
4、主启动类增加注解:@EnableRedisHttpSession
5、使用
在不同服务中:存入数据和取数据,都需以上四个步骤
public viod loginPage(HttpSession session){
//设置存入的数据,data可以是实体对象
public static final String LOGIN_USER = "loginUser";
session.setAttribute(LOGIN_USER,data);
//从session中取出数据
session.getAttribute(LOGIN_USER);
}
//直接从前端获取session数据
${session.loginUser}
6、其他借鉴
https://www.yuque.com/zhangshuaiyin/guli-mall/dno05u