Java序列化引起的问题
是什么总加班
熬夜发版的一天,测试:“快来看看所有的商品信息都没法查看了”。“怎么会这样,我来看看”。
问题
“好像是Redis序列化问题,这次迭代把Redis链接工具换成了Jedis,由于原来存的是JSON格式,Jedis配置的JSON序列化好像跟spring-boot-starter-data-redis提供的序列化方式不一样“,一位开发说到
我尝试修改Jedis序列化方式后缓存序列化失败问题并没有解决。
这时时间已经过去了一小时。
“不对把日志发我我看一下”,过了一会,“不是JSON序列化问题,是Serializable序列化失败了吧”,我说到
“对。。。我好像把一些实现了Serializable接口的类添加了serialVersionUID”另一位开发说到
“emmmm早说呀”,知道原因后清除Redis缓存解决。
原因
这个问题在于原来配置的并不是JSON格式,而是使用JDK自带的序列化方式,而JDK自带的序列化方式会根据serialVersionUID来判断版本是否一致,原来默认生成的serialVersionUID和新配置的serialVersionUID值不同导致序列化失败。
复盘
- 当出现问题时,一定要自己查看问题,确定原因,防止出现上述情况。
- 对象如果实现Serializable接口一定要写serialVersionUID字段,不实现可能添加字段时导致序列化失败同时遵循阿里巴巴代码规范对象添加字段时不应修改serialVersionUID