工作中的问题场景:
将一个实体类对象set存入 redis中, 用的时候去get时,
报错提示:......SerializationException: Could not read JSON: Could not resolve type.......
明明实体类也实现 序列化接口了;
问题原因:
查看类中是否有除了get,set以外的其他方法,如果是注解开发,那就看看是不是有除了@Data以外的其他注解(如:@AllArgsConstructor 、@NoArgsConstructor);
在序列化时,只要类中方法有返回值,都会被序列化存入缓存中,存入时不会报错,
但是从缓存中取值时反序列化就会报错,因为除了对象属性字段有set方法,其他那些方法被序列号存入的值是没有set方法的
解决方案:
1、 设置redis反序列化时忽略未知属性
@Bean
public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
Jackson2JsonRedisSerializer
2、在实体类中只加 @Data注解,去掉其他会生成方法的注解或者去掉其他方法