使用redisTemplate.opsForValue().set() 将数据放入缓存的时候,因为我设置了序列化格式为json,使用的
Jackson2JsonRedisSerializer
来实现的value序列化,但有一个问题就是,如果你没有指定类型,取出来的时候会变为LinkedHashMap ,然后报:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx
面向百度编程一番之后,找到解决方案如下,指定一下序列化规则:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
enableDefaultTyping() 虽然提示过时,但也不影响嘛,重启后测试,还是不行,emmm想了想也不知道问题在哪里,直到看到一篇博客:https://blog.csdn.net/u010180738/article/details/79383246
里面有一句话:JacksonJsonRedisSerializer和GenericJackson2JsonRedisSerializer,两者都能系列化成json,但是后者会在json中加入@class属性,类的全路径包名,方便反系列化。
我就想能不能换成GenericJackson2JsonRedisSerializer呢,更改代码:
/**
* 配置Redis规则
*
* @param redisConnectionFactory RedisConnectionFactory
* @return RedisTemplate
*/
&