在此处配置了redis的键值对的序列化格式之后,发现可以以规定格式存入redis,但是往出取的时候会出现异常,debug之后发现是类型转换错误,网上给出的解释是: 在序列化的时候默认是将目标对象以Obejct类型进行序列化的,所以如果取出来的时候可以转换成Object类型对象,但是无法装换成ItemModel对象,此时需要给Jackson2JsonRedisSerializer对象做如下配置:
@Component
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
return redisTemplate;
}
}
然后将此对象添加至value的序列化格式配置中,就不会出现格式转换异常导致的 未知错误。
最后附上解惑的博客的链接https://blog.csdn.net/qq_33300570/article/details/79568180