SpringBoot&SpringCloud笔记

一、Fegin远程调用服务端返回值为Map<List,Integer>的方法时,客户端无法正常接收到结果的问题

原因是因为map的key为List时,无法被序列化,导致远程调用时并不能传递正确的值,客户端无法反序列化得到值,客户端得到的结果为null。
解决办法:将Map<List,Integer> 改为Map<Object,Integer>或Map<Object,Object>,即可正常接收到结果。原因是Object没有被序列化为字节,而是转换为了String
  • 复习序列化相关知识,序列化概念的产生就是为了支持Java语言的两种主要特性:
    1. Java的远程方法调用 RMI(Romote Method Invocation)
    2. 对象持久化,如JavaBeans,使用Bean时,需要在设计阶段对它的状态信息进行配置,状态信息必须被保存下来,以便程序启动时对其信息进行恢复
  • 除通过实现Serializable接口完成序列化之外,如果并不希望对象中的某个字段被序列化,可以在对象的该字段前添加transient关键字;或者是只希望序列化对象中的部分字段,可实现Externalizable接口,对序列化进行一个自定义控制。

刚翻到一篇写的很不错的文章,这里分享一下,讲的很细,看完《Java编程思想》,再看下面作者的内容,受益匪浅,刷新了我对序列化的认知。力荐这篇文章。

Java序列化有什么作用?序列化与不序列化有什么区别? - CodeSheep程序羊的回答 - 知乎
https://www.zhihu.com/question/26475281/answer/1257699781

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值