官方文档:https://docs.spring.io/spring-session/docs/2.2.6.RELEASE/reference/html5/#api-cookieserializer

引入SpringSession依赖

<!--        SpringSession,解决分布式session共享问题--><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></dependency>

引入Redis依赖

<!--        redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

配置application.yml

spring:## 配置SpringSession保存在redis中session:store-type: redis## 配置redisredis:host: 192.168.30.130port: 6379

启用SpringSession

@EnableRedisHttpSession
public class ProductApplication {public static void main(String[] args) {SpringApplication.run(ProductApplication.class, args);}
}

自定义CookieSerializer,解决子域session共享问题

@Configuration
public class MySpringSessionConfig {/*** cookie序列化器* @return*/@Beanpublic CookieSerializer cookieSerializer() {DefaultCookieSerializer serializer = new DefaultCookieSerializer();serializer.setCookieName("GULISESSION");serializer.setCookiePath("/");// 设置cookie的作用域为父域名serializer.setDomainName("gulimall.com");return serializer;}
}

自定义RedisSerializer,是为了能够在Redis Desktop Manager中方便查看session数据,将session数据序列化为JSON格式

@Configuration
public class MySpringSessionConfig {/*** cookie序列化器* @return*/@Beanpublic CookieSerializer cookieSerializer() {DefaultCookieSerializer serializer = new DefaultCookieSerializer();serializer.setCookieName("GULISESSION");serializer.setCookiePath("/");serializer.setDomainName("gulimall.com");return serializer;}/*** redis序列化器* @return*/@Beanpublic RedisSerializer<Object> springSessionDefaultRedisSerializer(){return new GenericFastJsonRedisSerializer();}
}

注意:RedisSerializer的name要命名为"springSessionDefaultRedisSerializer",否则这个redis序列器是不生效的。

到这里SpringBoot整合SpringSession的配置就结束了,想要了解更多内容请查看官网文档。

关于以上配置的部分说明

@EnableRedisHttpSession: 启用SpringSession

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(RedisHttpSessionConfiguration.class)
@Configuration
public @interface EnableRedisHttpSession {.......
}

@Import(RedisHttpSessionConfiguration.class) 导入RedisHttpSessionConfiguration配置

RedisHttpSessionConfiguration 中有这么一个方法,标注了@Qualifier(“springSessionDefaultRedisSerializer”),这就是为什么RedisSerializer的name要命名为"springSessionDefaultRedisSerializer"的原因

了解@Autowired(required = false)在方法上的作用

 @Autowired(required = false)@Qualifier("springSessionDefaultRedisSerializer")public void setDefaultRedisSerializer(RedisSerializer<Object> defaultRedisSerializer) {this.defaultRedisSerializer = defaultRedisSerializer;}

RedisHttpSessionConfiguration的父类SpringHttpSessionConfiguration中有下面的方法

 @Autowired(required = false)public void setCookieSerializer(CookieSerializer cookieSerializer) {this.cookieSerializer = cookieSerializer;}

这就是我们将CookieSerializer、RedisSerializer放入容器中就能定制我们想要的功能的原理

此次分析或有不足之处,望大牛不吝赐教。

SpringBoot整合SpringSession以及自定义CookieSerializer和RedisSerializer详解相关推荐

  1. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  2. SpringBoot整合AlertManager,实现自定义的告警收敛以及邮件处理,告警风暴,解决重复告警问题

    SpringBoot整合AlertManager,实现自定义的告警收敛以及邮件处理,告警风暴,解决重复告警问题 需求 将传感器通过Http发送到微服务(SpringBoot项目)的警报消息,通知给对应 ...

  3. Springboot整合springsession实现session共享

    Springboot整合springsession实现session共享 简介 session我们之前有介绍过(可见springboot整合springsecurity),简单来说就是将用户信息或者数 ...

  4. Spring Boot 整合 shiro 之盐值加密认证详解(六)

    Spring Boot 整合 shiro 之盐值加密认证详解 概述 不加盐认证 加入密码认证核心代码 修改 CustomRealm 新增获取密文的方法 修改 doGetAuthenticationIn ...

  5. php动态写入vue,Vue自定义动态组件使用详解

    这次给大家带来Vue自定义动态组件使用详解,Vue自定义动态组件的注意事项有哪些,下面就是实战案例,一起来看一下. 现在基于vue的UI组件库有很多,比如iview,element-ui等.但有时候这 ...

  6. android 刷新标题栏,Android 自定义标题栏的实例详解

    Android 自定义标题栏的实例详解 开发 Android APP 经常会用到自定义标题栏,而有多级页面的情况下还需要给自定义标题栏传递数据. 本文要点: 自定义标题填充不完整 自定义标题栏返回按钮 ...

  7. jdbc 连接池 java_JDBC自定义连接池过程详解

    这篇文章主要介绍了JDBC自定义连接池过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 开发中,"获得连接"和" ...

  8. linux右键菜单颜色,Linux_自定义右键菜单代码详解, style !-- /*定义菜单 - phpStudy...

    自定义右键菜单代码详解 < style > < !-- /*定义菜单方框的样式1*/ .skin0 { position:absolute; text-align:left; wid ...

  9. python代码图片头像_Flask 上传自定义头像的实例详解

    Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...

最新文章

  1. iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?...
  2. stm32温度控制按键_干货 | STM32常用功能介绍
  3. 加载中_GIS地图在项目中的加载显示
  4. 【codevs2098】【Tyvj1625】化工厂装箱员,煞笔的人打煞笔的DP
  5. 安卓应用安全指南 4.8 输出到 LogCat
  6. DNS Flood Detector让DNS更安全
  7. Could not find com.serenegiant:common:4.1.1
  8. 统计学习方法——统计学习基础(一)
  9. 求边界点 -- Python
  10. Cocoapods使用代理
  11. 交叉熵、KL散度、Jeffery分歧、JS散度
  12. Excel模糊查找+数据透视
  13. 二战计算机技术,2020二本二战西南交大电子信息(计算机技术)上岸
  14. awk oracle,工具: ass109.awk 分析 Oracle 的跟踪文件
  15. Win11怎么创建系统映像?
  16. 串口转无线WiFi模块——WizFi210-EVB操作手册
  17. Tomcat配置图片保存路径
  18. 如何通过VB合并Excel单元格以及设置Excel行高?VB创建Excel表格,合并单元格,生成图形等操作
  19. 常用模型、分析方法及其检验标准累积汇总
  20. 大数据时代下的贝叶斯公式

热门文章

  1. 商城系统功能需求分析_免费搭建方式介绍_OctShop
  2. Disable floppy driver(禁用软盘)
  3. Orangepi Zero2——系统启动及wiringPi外设SDK安装
  4. 共享办公室出租,构建办公生态
  5. osmosis 心电图学习
  6. 纺织品抗静电测试方法
  7. Tigo获得Flex MLPE平台专利
  8. maxim-MAX78000-windows10-wsl2-Ubuntu20.04-pyenv+pytorch+ai8x环境搭建
  9. 基于springboot+h5+websocket的即时通讯客服系统和百度实时语音转译(语音在线识别)
  10. 船舶自动识别系统数据,AIS数据,全球AIS实时及历史数据