java 序列化

最近开发用到redis,未曾了解过redis的我开始看文档,看文档,看文档。。。
作为一只java monkey,很自然的选用了 spring-data -redis , 然后看文档,看文档,看文档。。。

当需要把一个对象以hash存储在redis中时候,我是很轻松愉快的写完了
然后写测试用例,相应的实体bean属性存值居然为null,debug多次,发现还是null值,快炸毛了。。。

google,google,google...

发现 spring-data-redis 存数据的时候要序列化,取数据的时候要反序列化,欲知详情,请访问  http://www.oschina.net/question/163220_141069

于是找到我的bean类,将其 implements Serializable 感觉这下应该 test success 了,
可但是,还特么是null。。。

这时大神同事来救急了,见我的bean类已经实现了序列化接口,安静了片刻,去看bean的父类fatherbean,父类fatherbean 并没有implements Serializable,然后他果断将父类fatherbean implements Serializable, 再一测,这时真正的 test success 了,然后华丽丽的他走了,扔给我一本书,好好看看 java 的序列化机制。。。

那么书上是这么说的。。

当父类继承serializable 接口时,所有的子类都可以被序列化
子类实现了serializable接口,父类没有,父类中的属性不能被序列化(不报错,数据会丢失),但是在子类中属性仍能正确序列化。
如果序列化的属性是对象,则这个对象也必须实现serializable接口,否则会报错
在反序列化时,如果对象的属性有修改或删减,则修改的部分属性会丢失,但不会报错
在反序列化时,如果serialVersionUID被修改,则反序列化时回失败

啊,又涨姿势了~~

本次的bug还是让我消耗了一些时间,问题出在哪了?
仔细想想,
1.解决问题思路不对(居然怀疑redisTemplate,光debug它的 source code 了)
2.技术积累存在盲点

要养成 遇到问题,解决问题,总结问题的好习惯啊~ 

转载于:https://my.oschina.net/igeeker/blog/480474

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值