博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis 遇到了取缓存的问题, 仍未解决
阅读量:3922 次
发布时间:2019-05-23

本文共 2493 字,大约阅读时间需要 8 分钟。

/**	 * 配置RedisTemplate存放缓存的格式	 * @param factory	 * @return	 */	private Jackson2JsonRedisSerializer jackson2JsonRedisSerializer() {        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer =                new Jackson2JsonRedisSerializer<>(Object.class);        ObjectMapper objectMapper = new ObjectMapper();        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);        objectMapper.configure(MapperFeature.USE_ANNOTATIONS, false);        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);        // 此项必须配置,否则会报java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);        return jackson2JsonRedisSerializer;    }		@Bean    public RedisTemplate
redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate
template = new RedisTemplate
(); Jackson2JsonRedisSerializer
jsonSerial = new Jackson2JsonRedisSerializer(Object.class);// //修复反序列化bug// ObjectMapper om = new ObjectMapper();// om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);// om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);// jsonSerial.setObjectMapper(om); template.setDefaultSerializer(jackson2JsonRedisSerializer()); template.setKeySerializer(RedisSerializer.string()); template.setConnectionFactory(redisConnectionFactory); template.afterPropertiesSet(); return template; } public class MyObjectMapper extends ObjectMapper { private static final long serialVersionUID = 1L; public MyObjectMapper() { super(); // 去掉各种@JsonSerialize注解的解析 this.configure(MapperFeature.USE_ANNOTATIONS, false); // 只针对非空的值进行序列化 this.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 将类型序列化到属性json字符串中 this.enableDefaultTyping(DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); // 对于找不到匹配属性的时候忽略报错 this.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 不包含任何属性的bean也不报错 this.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); } }

1、取出来的缓存格式是LinkHashMap格式, 无法转化成一个对象

2、我添加ObjectMapper修改其配置, 问题1消失, 但无法反序列化!
我搜寻网上众多答案仍未解决!希望我有生之年能解决!

转载地址:http://ifern.baihongyu.com/

你可能感兴趣的文章
剑指 Offer 31. 栈的压入、弹出序列
查看>>
剑指 Offer 32 - III. 从上到下打印二叉树 III
查看>>
剑指 Offer 33. 二叉搜索树的后序遍历序列
查看>>
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
查看>>
剑指 Offer 68 - II. 二叉树的最近公共祖先
查看>>
剑指 Offer 18. 删除链表的节点
查看>>
剑指 Offer 32 - II. 从上到下打印二叉树 II
查看>>
杭电oj-2011 多项式求和 C++
查看>>
杭电oj-2014 青年歌手大奖赛_评委会打分 C++
查看>>
杭电oj-2015 偶数求和 C++
查看>>
杭电oj-2016 数据的交换输出 C++
查看>>
杭电oj-2017 字符串统计 C++
查看>>
杭电oj-2018 母牛的故事 C++
查看>>
Educational Codeforces Round 87 (Rated for Div. 2)----题目+题解(A、B)
查看>>
Codeforces Round #647 (Div. 2) - Thanks, Algo Muse!B. Johnny and His Hobbies(异或)---题解
查看>>
使用WinINet获取网页源代码
查看>>
Ansi、Unicode、UTF-8字符串之间的转换和写入文本文件
查看>>
error C1189:#error:This file requires _WIN32_WINNT to be #defined at least to 0x0403
查看>>
CentOS yum 源的配置与使用
查看>>
error while loading shared libraries: libevent-2.0.so.5 安装好mamcache,启动服务时
查看>>