常见错误
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to
解决方案
@Component
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(new StringRedisSerializer());
//json序列化方式
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper1 = new ObjectMapper();
objectMapper1.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
//解决Redis value的序列化方式 datatime时间格式的解决
SimpleModule simpleModule1 = new SimpleModule();
simpleModule1.addSerializer(DateTime.class, new JodaDateTimeJsonSerializer());
simpleModule1.addDeserializer(DateTime.class, new JodaDateTimeJsonDeserializer());
objectMapper1.registerModule(simpleModule1);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper1);
template.setValueSerializer(jackson2JsonRedisSerializer);
//解决方法 设置好默认的序列化方式就可以在接受json数据时自动解析json
template.setDefaultSerializer(jackson2JsonRedisSerializer);
return template;
}
}