我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Springsession redis修改默认的序列化方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Springsession redis修改默认的序列化方法是什么

本篇内容介绍了“Springsession redis修改默认的序列化方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、配置Spring-session-redis 的关键配置如下:

    <!-- 设置Cookie domain 和 名称 -->    <bean id="defaultCookieSerializer" class="org.springframework.session.web.http.DefaultCookieSerializer">        <property name="domainName" value="${sso.cookie.domain}"/>        <property name="cookieName" value="${sso.cookie.name}"/>        <property name="cookieMaxAge" value="${sso.cookie.maxage}" />        <property name="cookiePath" value="${sso.cookie.path}" />        <!--<property name="domainNamePattern" value="^.+?\\.(\\w+\\.[a-z]+)$"/>-->    </bean><!-- 配置spring session --><bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"><!-- session超时设置 --><property name="maxInactiveIntervalInSeconds" value="${spring.session.expiration}" />        <property name="cookieSerializer" ref="defaultCookieSerializer" /></bean>

二、查看 RedisHttpSessionConfiguration 源代码如下:

@Beanpublic RedisTemplate<Object, Object> sessionRedisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();template.setKeySerializer(new StringRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer());if (this.defaultRedisSerializer != null) {template.setDefaultSerializer(this.defaultRedisSerializer);}template.setConnectionFactory(connectionFactory);return template;}@Beanpublic RedisOperationsSessionRepository sessionRepository(@Qualifier("sessionRedisTemplate") RedisOperations<Object, Object> sessionRedisTemplate,ApplicationEventPublisher applicationEventPublisher) {RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(sessionRedisTemplate);sessionRepository.setApplicationEventPublisher(applicationEventPublisher);sessionRepository.setDefaultMaxInactiveInterval(this.maxInactiveIntervalInSeconds);if (this.defaultRedisSerializer != null) {sessionRepository.setDefaultSerializer(this.defaultRedisSerializer);}String redisNamespace = getRedisNamespace();if (StringUtils.hasText(redisNamespace)) {sessionRepository.setRedisKeyNamespace(redisNamespace);}sessionRepository.setRedisFlushMode(this.redisFlushMode);return sessionRepository;}

创建RedisTemplate时,指定的默认序列化是:StringRedisSerializer,当 defaultRedisSerializer != null 时,重新指定了序列化方法。defaultRedisSerializer 的初始化代码如下:

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

因此,我们只需要创建名为 springSessionDefaultRedisSerializer 的Bean,及可修改默认序列化方法。

<bean id="springSessionDefaultRedisSerializer" class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />

注:使用JSON序列化,在特定的场景,会报错,谨慎使用。

三、RedisTemplate 初始化代码如下:

public void afterPropertiesSet() {super.afterPropertiesSet();boolean defaultUsed = false;if (defaultSerializer == null) {defaultSerializer = new JdkSerializationRedisSerializer(classLoader != null ? classLoader : this.getClass().getClassLoader());}if (enableDefaultSerializer) {if (keySerializer == null) {keySerializer = defaultSerializer;defaultUsed = true;}if (valueSerializer == null) {valueSerializer = defaultSerializer;defaultUsed = true;}if (hashKeySerializer == null) {hashKeySerializer = defaultSerializer;defaultUsed = true;}if (hashValueSerializer == null) {hashValueSerializer = defaultSerializer;defaultUsed = true;}}if (enableDefaultSerializer && defaultUsed) {Assert.notNull(defaultSerializer, "default serializer null and not all serializers initialized");}if (scriptExecutor == null) {this.scriptExecutor = new DefaultScriptExecutor<K>(this);}initialized = true;}

可以看出,如果没有指定默认值,使用 JdkSerializationRedisSerializer。

特别提醒:如果已有session中存在旧有的序列化值,更换序列化方法后,要删除旧值,使用新的序列化进行调试,否则会报序列化错误。

特别提醒:如果已有session中存在旧有的序列化值,更换序列化方法后,要删除旧值,使用新的序列化进行调试,否则会报序列化错误。

“Springsession redis修改默认的序列化方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Springsession redis修改默认的序列化方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Springsession redis修改默认的序列化方法是什么

本篇内容介绍了“Springsession redis修改默认的序列化方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、配置Spr
2023-07-05

Redis的默认序列化方式是什么

Redis默认的序列化方式是使用简单的字符串。Redis存储的数据都是以字符串的形式进行存储的,包括整数、浮点数、字符串等。Redis只能对字符串类型的数据进行操作,其他类型的数据需要在应用层进行序列化处理后再存储到Redis中。Redis
Redis的默认序列化方式是什么
2024-04-29

Spring session redis 修改默认的序列化方法(案例)

这篇文章主要介绍了Spring session redis 修改默认的序列化方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-14

电脑默认打开程序的修改方法是什么

电脑默认打开程序的修改方法可以通过以下步骤进行操作:1. 在Windows系统中,右键单击要修改默认打开程序的文件,选择“属性”选项。2. 在属性对话框中,点击“更改”按钮。3. 在“打开方式”对话框中,选择要作为默认打开程序的程序,并点击
2023-09-11

tomcat默认目录修改的方法是什么

要修改Tomcat默认目录,可以按照以下步骤操作:打开Tomcat的配置文件,通常是在Tomcat安装目录下的conf文件夹中,可以找到server.xml文件。找到以下配置项,可以修改Tomcat的默认目录:tomcat默认目录修改的方法是什么
2024-03-11

redis存放序列化的方法是什么

在Redis中存放序列化数据有两种常见的方法:1. 使用Redis的String数据类型,并将数据序列化为字符串后存储。常用的序列化方法包括JSON、MessagePack、XML等。可以使用编程语言自带的序列化库,或者使用第三方库进行序列
2023-09-05

win10默认安装路径修改的方法是什么

要修改Windows 10的默认安装路径,可以按照以下步骤进行操作:1. 打开“设置”应用程序。你可以在开始菜单中搜索“设置”并点击打开。2. 在“设置”应用程序中,点击“系统”。3. 在“系统”选项卡中,选择“存储”。4. 在“存储”选项
2023-09-18

Redis序列化与部署的方法是什么

Redis支持多种序列化方式,包括RDB和AOF。RDB是一种快照方式,将内存中的数据保存到磁盘中,而AOF是一种追加方式,将每次写操作都追加到文件中。这两种方式各有优劣,可以根据实际需求选择合适的方式。Redis的部署方式主要有单机部署
Redis序列化与部署的方法是什么
2024-04-29

Redis序列化库的评测方法是什么

评测Redis序列化库的方法可以基于以下几个指标进行:性能:评估序列化库在实际使用场景下的性能表现,包括序列化和反序列化的速度、内存占用等指标。兼容性:测试序列化库与不同版本的Redis以及其他相关组件(如客户端、数据存储等)的兼容性,确保
Redis序列化库的评测方法是什么
2024-04-29

redis存储数据序列化的方法是什么

Redis存储数据时,可以使用以下几种序列化方法:1. 字符串序列化:将数据以字符串的形式进行存储,可以使用Redis提供的字符串数据结构进行存取操作。常见的字符串序列化方法有JSON、XML、YAML等。2. 二进制序列化:将数据以二进制
2023-08-24

Redis序列化数据处理的方法是什么

Redis序列化数据处理的方法有两种:一种是使用Redis自带的序列化工具,另一种是使用自定义的序列化工具。使用Redis自带的序列化工具:Redis支持多种序列化格式,包括JSON、MsgPack、Protobuf等。可以通过配置Redi
Redis序列化数据处理的方法是什么
2024-04-29

Redis序列化数据传输的方法是什么

Redis使用一种称为RESP(REdis Serialization Protocol)的二进制协议来序列化数据传输。这种协议是一种简单且高效的协议,用于客户端和服务器之间的通信,在数据传输时使用。RESP协议可以将各种数据类型(如字符
Redis序列化数据传输的方法是什么
2024-04-29

云服务器ssh修改默认端口的方法是什么

修改云服务器SSH默认端口的方法有以下几种:1. 修改SSH配置文件:登录到云服务器,找到SSH配置文件(一般是/etc/ssh/sshd_config),用文本编辑器打开文件,找到"Port"行,并将默认端口号修改为你想要的新端口号。保存
2023-08-09

oracle修改序列当前值的方法是什么

在Oracle数据库中,要修改序列(Sequence)的当前值,可以使用 ALTER SEQUENCE 语句来实现。以下是一个示例:ALTER SEQUENCE sequence_name INCREMENT BY increment_v
oracle修改序列当前值的方法是什么
2024-04-09

golang序列化和反序列化的方法是什么

Go语言中序列化和反序列化可以通过将数据转换为字节流格式来实现,常见方法有“JSON序列化和反序列化”、“XML序列化和反序列化”、“gob序列化和反序列化”和“Protocol Buffers序列化和反序列化”四种:1、使用“json.M
golang序列化和反序列化的方法是什么
2023-12-18

win7怎么设置默认浏览器(程序) win7修改默认浏览器的方法

怎么设置默认浏览器,默认程序怎么设置?21世纪,网上冲浪的年代,网络在编程现实生活中扮演的角色越来越重要。作为打开这个世界的窗口--浏览器,更是多种多样。选择一个功能强大,流畅好用的浏览器显得愈加重要,加之目前有很多三线浏览器往往
2023-06-06

fastjson序列化的方法是什么

Fastjson提供了多种方式进行序列化,常用的有以下几种方法:1. 使用JSON.toJSONString()方法将对象转化为JSON字符串。例如:```User user = new User("张三", 18);String json
2023-08-16

高并发环境下Redis序列化的方法是什么

在高并发环境下,Redis序列化的方法可以选择使用二进制序列化或者JSON序列化。二进制序列化:使用二进制序列化可以减少序列化和反序列化的时间,并且节省存储空间。在高并发环境下,使用二进制序列化可以提高Redis的性能和吞吐量。JSON序列
高并发环境下Redis序列化的方法是什么
2024-04-29

序列化数据同步到Redis中的方法是什么

序列化数据同步到Redis中的方法有以下几种:使用Redis自带的数据结构:Redis支持的数据结构包括字符串、列表、集合、有序集合、哈希表等,可以直接将数据序列化后存储到这些数据结构中。使用Redis的持久化功能:Redis提供了RDB持
序列化数据同步到Redis中的方法是什么
2024-04-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录