Bootstrap

SpringBoot整合Redis并使用redisTemplate操作Redis出现的坑

使用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
     */
    &
;