首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用GenericFastJsonRedisSerializer的RedisTemplate无法反序列化父类属性

问题描述: 使用GenericFastJsonRedisSerializer的RedisTemplate无法反序列化父类属性。

解决方案: GenericFastJsonRedisSerializer是一种用于Redis数据序列化和反序列化的FastJson实现。它可以将Java对象序列化为JSON格式的字符串,并将其存储在Redis中。但是,当使用GenericFastJsonRedisSerializer的RedisTemplate进行反序列化时,可能会遇到无法反序列化父类属性的问题。

要解决这个问题,可以尝试以下方法:

  1. 自定义FastJsonRedisSerializer: 创建一个自定义的FastJsonRedisSerializer,继承自GenericFastJsonRedisSerializer,并重写反序列化方法。在反序列化方法中,手动将父类属性赋值给子类对象。
  2. 自定义FastJsonRedisSerializer: 创建一个自定义的FastJsonRedisSerializer,继承自GenericFastJsonRedisSerializer,并重写反序列化方法。在反序列化方法中,手动将父类属性赋值给子类对象。
  3. 使用Jackson序列化: 替换GenericFastJsonRedisSerializer为Jackson2JsonRedisSerializer,它是Spring提供的另一种Redis数据序列化器。Jackson2JsonRedisSerializer使用Jackson库进行序列化和反序列化,可以正确处理父类属性的反序列化。
  4. 使用Jackson序列化: 替换GenericFastJsonRedisSerializer为Jackson2JsonRedisSerializer,它是Spring提供的另一种Redis数据序列化器。Jackson2JsonRedisSerializer使用Jackson库进行序列化和反序列化,可以正确处理父类属性的反序列化。

以上是两种解决方案,您可以根据具体情况选择适合您的方法。如果您使用的是腾讯云的云产品,可以考虑使用腾讯云提供的云原生数据库TencentDB for Redis,它提供了更高性能和可靠性的Redis服务。

更多关于Redis的信息和腾讯云相关产品,请参考腾讯云官方文档:

请注意,以上答案仅供参考,具体解决方案可能因您的实际情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Fastjson 和 Spring 进行集成

    在 Spring MVC 中集成 Fastjson 如果你使用 Spring MVC 来构建 Web 应用并对性能有较高要求的话,可以使用 Fastjson 提供FastJsonHttpMessageConverter...来替换 Spring MVC 默认 HttpMessageConverter 以提高 @RestController @ResponseBody @RequestBody 注解 JSON序列化速度...(通常是基于 Spring Boot 项目)配置 RedisTemplate 的话只需在你配置(被@Configuration注解修饰)中显式创建 RedisTemplate Bean,设置 Serializer...(fastJsonRedisSerializer);//单独设置valueSerializer return redisTemplate; } 通常使用 GenericFastJsonRedisSerializer...即可满足大部分场景,如果你想定义特定类型专用 RedisTemplate 可以使用 FastJsonRedisSerializer 来代替 GenericFastJsonRedisSerializer

    51610

    SpringBoot 整合 spring cache

    ; 并支持使用JCache(JSR-107)注解简化我们开发; 默认使用 ConcurrenMapCacheManager Cache接口为缓存组件规范定义,包含缓存各种操作集合; Cache接口下...使用Spring缓存抽象时我们需要关注以下两点; 1、确定方法需要被缓存以及他们缓存策略 2、从缓存中读取之前缓存存储数据 三、几个重要概念&缓存注解 四、整合redis实现缓存 创建项目...字段 dID ,编辑器生成是 getdId() ,而lombok 编译成是getDId(),这中情况会可能会导致序列化成json时多出一个字段 json串出现 did 和 dId ,出现这种情况时,...RedisTemplate(); template.setConnectionFactory(redisConnectionFactory); GenericFastJsonRedisSerializer...启动 SpringbootCacheApplication 使用**@EnableCaching**开启缓存 @EnableCaching @SpringBootApplication public

    22310

    【小家Spring】Redis序列化RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化

    本篇着重介绍一下几种常用序列化方式 最近在做一个项目,由于并发量大,大量使用到了RedisTemplate来操作Redis。但使用过程中,遇到了不少坑,各种翻看源码来跟踪,也总结出了不少经验。...在执行序列化时候,操作的如果是Bean,必须有默认构造器,否则报错 redis集群问题(关于集群这几个问题,后续在专门演示和解释) 如果连接为Redis集群,则不能用管道方法,除非改写管道...下面主要介绍一下,Spring官方现在还存在6大序列化器: Generic单词意思:一般; 通用属性; OxmSerializer 以xml格式存储(但还是String类型~)...因此几乎没有人再使用此方式了 JdkSerializationRedisSerializer 从源码里可以看出,这是RestTemplate默认序列化方式。...FastJsonRedisSerializer和GenericFastJsonRedisSerializer 和上面一样讲述一样,FastJsonRedisSerializer需要指定反序列化类型,

    7.6K41

    【秒杀系统】秒杀系统和拓展优化

    ; redisTemplate.setConnectionFactory(redisConnectionFactory); //声明 key 和 value 序列化方式...(keySerializer); redisTemplate.setValueSerializer(valueSerializer); //多种序列化方式 最好是谁序列化谁处理...; } } 商品列表 商品列表界面,是比较简单,设计思路还是基于传统三层开发 Controller -> servier -> dao这样分层开发模式 实体 这里为了方面展示,就展示实体属性...100 抢 10 可以发现使用了 事务之后我们解决了超卖问题 举一三 那除了事务 还有什么方式可以解决超卖问题呢?...("lua/sekill.lua"))); 设置脚本位置,之后用之前工具封装redis方法将脚本和需要参数list 传入执行即可 //使用lua 脚本 保证原子性 (分布式锁)

    4.4K21

    和子类对象获取值方式验证,通过属性方式获取不到值,需要使用get方法

    和子类对象获取值方式验证,通过属性方式获取不到值,需要使用get方法 静态属性通过.属性方式获取,对象获取使用get方法获取 package com.example.core.mydemo.java...String channelName) { this.channelName = channelName; } /** * partnerName: //通过属性方式获取不到值...,需要使用get方法 * channelName: //通过属性方式获取不到值,需要使用get方法 * partnerName2:合作商名称 * channelName2...* channelName3:渠道商名称 //对象自身属性值可以获取 * partnerName4:合作商名称 * channelName4:渠道商名称...* MAX=100 静态属性通过.属性方式获取,对象获取使用get方法获取 * @param args */ public static void main(String

    9910

    重学SpringBoot系列之redis与spring cache缓存

    常用缓存操作流程 整合Spring Cache 在ArticleController上实现一个简单例子 更改Redis缓存序列化方式 详述缓存声明式注解使用 缓存注解-增删改查 单个对象查询缓存...redisTemplate操作数据 redis模板封装 RedisTemplate 封装使我们能够更方便进行redis数据操作,比直接使用Jedis或者Lettucejava SDK要方便很多。...因为RedisTemplate默认使用是JdkSerializationRedisSerializer,也就是使用Java JDK默认序列化方式存储数据。...而且是以二进制形式保存,自然人无法理解。 Jackson2JsonRedisSerializer: 使用Jackson库将对象序列化为JSON字符串。...; } //本节重点配置,让Redis缓存序列化方式使用redisTemplate.getValueSerializer() //不在使用JDK默认序列化方式 @Bean

    1.2K10

    SpringBoot(七) - Redis 缓存

    hset key 子key 子value 将key,增加子键值对,类似属性 hget key 子key 获取key,某个子key值,获取属性值 hmset key 子key1 子val1...批量获取属性 hgetall key 批量获取属性及值 hdel key 子key 删除子key属性及值 hlen key 返回key中子key个数,相当于java实体属性个数 hexists...redisTemplate,存放key和value值时,会自动使用Object序列化和反序列化,导致redis中真实存放数据不是原始值,而是序列化值 数据结果: 2.4 自定义redisTemplate...配置 //Redis自定义配置,实现一个自定义序列化方式 redisTemplate,提缓缓掉默认自动配置 redisTemplate,实现String类型任意类型value @Configuration...: 2.5 自定义redisUtils工具 2.5.1 自定义redisUtils工具 ---> RedisUtil 工具 2.5.2 使用自定义redisTemplate和redisUtils

    90310

    你有没有掉进去过这些Spring“陷阱“(下)

    private RedisTemplate redisTemplate; 执行测试,并查看Redis中数据 key与value序列化方式都是AlphaRedisTemplate设置String...或者可以使用@Resource注解指定注入实现。...这种循环依赖属于构造器循环依赖,JVM在实例化时,需要先实例化构造器中参数,由于参数无法提前实例化导致报错。...Spring 能解决循环依赖问题,值得是解决属性依赖问题,将上面两个中构造起方法删除,使用@Autowire注解注入属性,改为属性依赖即可。...Spring使用三级缓存策略来解决循环依赖问题,只能解决单例模式下循环依赖 一级缓存:用于存放完全初始化好Bean 二级缓存:存放原始Bean对象(未填充属性),用于解决循环依赖 三级缓存:存放

    42350

    SpringBoot+Redis实现图形验证码

    一般来说我们更倾向于在SpringBoot中使用 Spring Data Redis来操作Redis,但是随着而来则是它序列化问题,默认使用是JdkSerializationRedisSerializer...针对这种情况我们可以使用Jackson2JsonRedisSerializer这一序列化方式,不建议使用StringRedisTemplate来替代RedisTemplate,因为它提供数据类型和操作都有限...定义一个名为RedisConfig,该类用于重写RedisTempplate序列化逻辑,使用Jackson2JsonRedisSerializer取代默认JdkSerializationRedisSerializer...type: jpg # 验证码格式 timeout: 60 # 验证码过期时间,单位秒 读取配置文件 第七步,新建config包,并在该包内新建一个名为VerifyCodeConfig属性配置...,该类用于将用户在application.yml配置文件中定义配置项与VerifyCodeConfig这一属性POJO进行映射: @Component @ConfigurationProperties

    2K41

    2 Springboot中使用redis,配置rediskey value生成策略

    当然也可以自己定义序列化方式,使用别的Json工具,或者别的什么方法来完成序列化方式。 完成RedisTemplate设置后,再次save一个Post对象来看看在redis里存储方式。 ?...在上一篇里,还提到了无需配置yml中redis属性,ip、port之类,系统会识别默认。下面来看看如何使用自己redis配置。...可以用ctrl加左键点击host或者post属性,进入。 ? 这个就是采用prefix=spring.redis前缀配置,我们也可以自定义类似的配置。...在配置文件里设置了ip和port及pool等属性,然后打开RedisCacheConfig,来使用yml里这些redis配置。...JedisConnectionFactory,这里我们使用配置文件定义属性来创建一个自己JedisConnectionFactory。

    3.9K20

    StringRedisTemplate和RedisTemplate区别(二)

    RedisTemplate默认采用是JDK序列化策略,保存key和value都是采用此策略序列化保存。...序列化方式;此时执行完整个方法后,还需要接着执行setConnectionFactory()方法,然后转向他RedisTemplateafterPropertiesSet方法,此时上述四个序列化方式已经设置...RedisTemplate使用序列在在操作数据时候,比如说存入数据会将数据先序列化成字节数组然后在存入Redis数据库,这个时候打开Redis查看时候,你会看到你数据不是以可读形式展现,...,比如说下面这种形式数据(StringRedisTemplate) 当Redis当中数据值是以数组形式显示出来时候,只能使用RedisTemplate才能获取到里面的数据。...所以当你使用RedisTemplate获取不到数据为NULL时,一般是获取方式错误。检查一下数据是否可读即可。

    31120

    Redis - RedisTemplate及4种序列化方式深入解读

    ---- 概述 使用Spring 提供 Spring Data Redis 操作redis 必然要使用Spring提供模板 RedisTemplate, 今天我们好好看看这个模板 。...---- RedisTemplate ? 看看4个序列化相关属性 ,主要是 用于 KEY 和 VALUE 序列化 。...classPropertyTypeName 属性对应值,作为默认类型(Default Typing) ,否则使用传入对象全名,作为默认类型(Default Typing)。...是不是多了@class 属性,反序列化对象类型就可以从这里获取到。...@class 属性看似完美解决了反序列化对象类型,但是带来 JSON 字符串占用变大,所以实际项目中,我们很少采用 Jackson2JsonRedisSerializer ---- XML 序列化方式

    14K51
    领券