springboot 缓存 Cacheable 序列化: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to

Spring Boot注解@Cacheable与Redis缓存关于LocalDateTime(反)序列化问题 由于项目中使用Spring Boot 2.0,以及需要将包含LocalDateTime的对象通过注解@Cacheable存入缓存。若不做配置,存入缓存会成功(redis数据类型为HEX,不便阅读),取出对象时则会报错反序列化失败。下面是具体解决办法: 需要增加一个修改RedisCacheManager序列化格式的RedisConfig类,包含LocalDateTime类型属性不需要添加任何注解。... 阅读详情

springboot 缓存反序列化失败:

项目使用 redis 来做缓存,使用 springboot 的 @Cacheable 缓存数据时,可以成功存入 redis, 但是在第二次请求命中缓存时,就会出现一下错误:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to ...
经定位,确定了错误原因:

原因:springboot 的缓存使用 jackson 来做数据的序列化与反序列化,如果默认使用 Object 作为序列化与反序列化的类型,则其只能识别 java 基本类型,遇到复杂类型时,jackson 就会先序列化成 LinkedHashMap ,然后再尝试强转为所需类别,这样大部分情况下会强转失败。此时就需要指定序列化方式为:
GenericJackson2JsonRedisSerializer,
指定后,在序列化时,会将类名存入到序列化后的 json 字符串中,如:
{"@class": "com.example.SpecialClass", "id" : 1, .... }
这样在取出缓存时,springboot 就可以自动根据 @class 对应的字段找到对应的类进行反序列化了

配置:

      @Bean
	  public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { 
	   RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); 
	   redisTemplate.setConnectionFactory(factory); 
	   Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
	   redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
	   redisTemplate.setDefaultSerializer(serializer);
	   return redisTemplate; 
	  } 

参考: spring-redistemplate-serialise-multiple-model-classes-into-json-need-to-use-mu

spring中遇到的java.lang.ClassCastException中cannot be cast to报错(初学) 关于这个报错,我们可能会遇到cannot be cast to(不能将什么类型转换成什么)我遇到问题的场景是在于复制包的时候没有导包。applicationContext.xml如下 School和Student如下 Mytest03如下 当Mytest03执行时,会出现如下的错误Student有参数构造方法java.lang.ClassCastException: com.bjpowernode.ba03.Student cannot be cast to com.bjpowernode.ba01.Stu 阅读详情

相关推荐

UR5双臂Gazebo仿真(Python)

近来在Gazebo上搭了一个ur5双臂仿真平台。 差不多就是以下这样。 使用rostopic list查看一下话题,如下 显然,采用/left_arm_controller/follow_joint_trajectory/goal和/right_arm_controller/follow_joint_trajectory/goal两个话题来控制双臂的运动。 现在的问题是,如何保证双臂运动的一致性,即如何能保证双臂能同时接受到以上两个消息。 思路一:设置/left_arm_controlle

qq_42823342的博客 2233

Spring-Data-Redis--解决java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx

说明 本文介绍解决Spring-Data-Redis的“java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx”报错的方法。 出现的场景 SpringBoot项目中使用Redis来进行缓存。把数据放到缓存中时没有问题,但从缓存中取出来反序列化为对象时报错:“java.lang.ClassCastException: java.util.LinkedHashMap cannot

IT利刃出鞘的博客 1万+

H3C交换机S-MLAG实战:如何用bond4模式实现服务器高可用(附避坑指南)

本文详细介绍了H3C交换机S-MLAG技术与服务器bond4模式的实战配置,帮助实现跨设备链路聚合的服务器高可用方案。通过解析S-MLAG技术优势、bond4模式选择、关键配置步骤及常见问题排查,提供了一套完整的避坑指南和优化建议,适用于企业级网络架构的高可用需求。

weixin_30790841的博客 466

使用SpringCache实现缓存,自定义序列化方式,解决序列化bug

使用SpringCache实现缓存,自定义序列化方式,解决序列化bug 在学习SpringCache之前,很多同学会使用硬编码的方式去给代码设置缓存,缓存操作和业务逻辑之间的代码耦合度高,对业务逻辑有较强的侵入性。 当然我们也可以结合Spring的AOP和自定义注解去实现缓存。 那么在Spring中,我们可以直接使用SpringCache来完成我们在项目中数据的缓存操作。 缓存声明 名称 解释 @Cacheable 根据方法的请求参数对其结果进行缓存,下次同样的参数来执行该方法时可以直接从缓

wazk2008的博客 4956

芯片设计中的setup和hold检查:为什么你的电路会跑飞?

本文深入解析了芯片设计中Setup与Hold检查的核心原理,它们是确保电路可靠运行的“黄金窗口”。通过剖析触发器物理本质、时序路径公式及检查方法,解释了Setup违例(数据太慢)和Hold违例(数据太快)如何导致电路“跑飞”,并提供了从RTL优化到物理实现的实战修复策略与协同优化技巧。

weixin_29268267的博客 475

CHI里的Error handling机制

本文讲解了CHI里的Error handling机制。

W1Z1Q的专栏 2500

彻底解决SpringBoot2配置Redis报错java.lang.ClassCastException

使用SpringBoot2 +spring-data-redis做缓存,GenericFastJsonRedisSerializer做序列化和反序列化的情况下,devtools开启本地热部署后,导致异常出现: java.lang.ClassCastException: DTOObject cannot be cast to DTOObject 某个类不能强制转换成某个类,但是者两个类确实是一模一样的,错误主要出现在类加载器上 首先,出现这个问题,因为类的全名和路径都一样,那么根...

maizi_yiyang的专栏 3527

豆包手机为什么能自己“玩手机”?原理是什么?豆包手机系统运行机制深度解析:读屏、抓取、推理链路全拆解

作为一个每天被前端 Bug 打醒的程序员,我这一阵子在关注“豆包手机”这个关键词,刷到的相关视频简直铺天盖地。朋友们,说句实话,我一开始也只是抱着“看看热闹”的心态,最近一位博主下面的内容,不是“它能做什么”,而是。如果你之前看过很多评测,这篇文章会给你完全不一样的视角。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1014

【异常】SSM+Redis缓存@Cacheable之java.lang.ClassCastException等

在整合redis的时候使用注解配置缓存策略的时候出现下述错误。java.lang.ClassCastException: com.guide.pojo.TUser cannot be cast to java.lang.String原因是返回值为对象,而不是默认的字符串类型。强转出现错误,抛出异常。解决办法: 配置文件中在RedisTemplate中注入序列化等属性。<bean id="redis

ZT的专栏 6065

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了无线充电系统面临的核心挑战,提出LCC补偿网络解决方案,阐述了其恒流输出和输入阻抗解耦原理。通过Simulink分步演示了系统建模过程,包括松耦合变压器、LCC+LC补偿网络、功率变换级搭建以及频率跟踪控制实现。仿真结果表明,LCC补偿系统在气隙变化和负载跳变下能保持输出电压稳定(波动±3%),效率达89%。文章还总结了工程实现要点,并探讨了动态充电、多负载系统等扩展应用。该教程为开发高效智能的无线充电系统提供了实用指导

amy_mhd的博客 63

静态编译Qt5源码(Kylin-Desktop-V10-SP1-2203-LoongArch64+qt5.15.16)

之前的文档,记录的是通用情况,本次笔者记录下Qt5的静态编译过程,供有需要的小伙伴参考使用的操作系统是Kylin-Desktop-V10-SP1-General-Release-2203-LoongArch64,处理器是龙芯3A5000,架构是loongarch。

aggs1990的专栏 1401

java.util.LinkedHashMap cannot be cast to com.thirtydays.bes.model.Use

异常情况 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.thirtydays.bes.model.User 使用@Cacheable 保存缓存 至 redis 中时,调用保存方法会报 类转换异常 代码 class cacheService @Cacheable(value = "redisCache1103",key = "T(com.thirtydays.common.constant.CacheK

weixin_43818197的博客 575

【YOLOv8科研级优化】集成YOLOv10的SCDown采样模块,让你的模型下采样更高效更精准

打开确保模型解析器能识别SCDown模块。通过将YOLOv10的SCDown模块集成到YOLOv8中,我们实现了一个“细节保留+高效下采样”的目标检测模型。这个改进不仅在工程上能提升小目标、细粒度场景的检测效果,更在科研上提供了“分阶段下采样”的创新思路——这种思路可以延伸到其他卷积网络(如ResNet、MobileNet)的下采样层改进中,帮你在论文中打造独特的研究点。

m0_71589036的博客 136

解决java.util.LinkedHashMap cannot be cast to 实体类......的问题

关于java.util.LinkedHashMap cannot be cast to 实体类…问题的出现以及解决办法 背景描述 在学习谷粒商城时,使用openfeign进行远程调用,由于有个接口返回的是R<List<·Object>>类型的数据,在调用方使用List<·Object>去接收数据时,出现java.util.LinkedHashMap cannot be cast to xxx数据转换异常错误。可知远程调用会将待转换的数据转换成LinkedHashMap,

qq_41570752的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

springcache支持的序列化方式及反序列化失败原因剖析

从接口RedisSerializer我们可以看出,springcache支持的序列化器有StringRedisSerializer,Jackson2JsonRedisSerializer和JdkSerializationRedisSerializer。 这些序列化器在底层是如何存储,有什么区别呢,使用中有哪些坑要注意呢?下面开始探索他们的神秘面纱 JacksonJsonRedisSerializer和GenericJackson2JsonRedisSerializer,两者都能系列化成json.

ice-wee的专栏 3402

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

spring boot 使用redis作为cache 出现:A cannot be cast to A.使用fastJson序列化

今天在使用spring boot+spring-data-redis 做缓存,在获取缓存的时候出现了:java.lang.ClassCastException: com.xxx.www.xxx.entity.Sign cannot be cast to com.xxx.www.xxx.entity.Sign 的异常,记录一下解决思路以及方案。 首先,出现这个问题,因为类的全名和路径都一样,那么根据...

Gabriel的专栏 2455

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SpringBoot中 LinkedHashMap cannot be cast to xxx解决方法

百度得出: 当我们将前端返回的Map中的参数get出来,并强转成其他类型时,它会先转换成LinkedHashMap,再尝试强转成其他的类。但是基本不会强转成功,所以会报java.util.LinkedHashMap cannot be cast to*******这个错误。 所以我试着将get出来的参数强转成了LinkedHashMap<String,Object>,再进行遍历就没有问题了,如果需要拿什么值,直接从里边get就好 代码如下 @PostMapping("addCon.

Ernar2234的博客 6823

springboot集成redis,使用@Cacheable导致java.lang.ClassCastException:异常

如题: 在springboot集成redis,使用@Cacheable的时候, 第一次查询到数据,存到了redis中, 紧接着第二次查询的时候,从缓存里取数据,报错 java.lang.ClassCastException: com.whb.book.entity.Book cannot be cast to com.whb.book.entity.Book 后来

蓝天之枫 1万+

【问题集】Springboot @Cacheable java.lang.ClassCastException: xxx cannot be cast to xxx

问题描述: Springboot项目,当用到@Cacheable注解的方法时,不走缓存方法正常,当触发缓存时报错,错误如下: java.lang.ClassCastException: xxx cannot be cast to xxx 很有意思,xxx不能转换为xxx,按常理说不通,A怎么不能cast成A呢,debug仔细检查了是否有拼错类名及不一致情况,确实xxx就是xxx, 怎么就不能cas...

让我们每天一起进步 3931

LinkedHashMap cannot be cast to xxx多种情况解决方法与解析(简单明了不废话)

LinkedHashMap cannot be cast to xxx多种情况解决方法与解析(简单明了)

qq_45944685的博客 1万+

SpringCache整合Redis并实现序列化和反序列化

利用redis进行缓存时,对数据进行序列化,解决乱码。用于处理返回前端的数据,序列化和反序列化的格式。:key的书写格式,双引号内部的是。通过#,可以获得参数的信息。,再加个单引号才能表示。

qq_58706693的博客 1970

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.rampage.model.BankInfo

redis集群,用注解@Cacheable见数据保存到缓存中,用template取出时出现了 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.rampage.model.BankInfo错误。 通过网上查找,找到以下解决方法,重写ObjectMapper,并替换template和cachema...

a1240110602的博客 3668

Redis获取缓存异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX

项目运行报错如下: 经过debug查看,从redis获取的值为LinkedHashMap,而是不是我们的实体类testinfo 经过查找代码中Jackson2JsonRedisSerializer使用的事object对象,然后反序列化就会默认为java.util.LinkedHashMap类型 因此对以上代码进行修改: package com.sinosoft.util; import com.fasterxml.jackson.annotation.JsonAutoDete..

心寒的博客 5608

多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....

多种方式解决Jav控制台报错 java.util.LinkedHashMap cannot be cast to.....

见证自己学习,成长的记录 1万+

当使用@cacheable缓存数据遇到的序列化问题

1.问题:使用@cacheable注解报错信息如下,很明显是jackson序列化时出的错误 Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token[["com.xxx.xxx.xxxxxxx.response.SummaryLeftResponse",{"mainpNam

Yangyg_0818的博客 5170

java web 开发错误记录

No identifier specified for entity 原因: entity 没有设置 @Id

心猿意码 544
上一篇: springboot 控制白名单
Julyraining
博客等级 码龄12年 3粉丝 84原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值