作者回复: ParameterizedTypeReference<List<Customer>>不可以么?还是说Customer也是带泛型的?在ParameterizedTypeReference里把T都变成具体类型。
作者回复: 这个上面添加了@JsonComponent,SpringBoot会把它们注册进来,Jackson JSON自己会使用它们来做Money类型的序列化和反序列化的。
作者回复: 底层可以用HttpComponent,然后设置连接池。 不设置的话,RestTemplate默认用JDK内置的类来处理HTTP请求,这就没有连接池了。
作者回复: 反序列化时忽略当前没有的属性就是一种兼容性,这样在服务端新增属性,不关心它的系统就无需升级。一般我们不建议删除或者修改已经发布的类型,也不建议在这些类里用枚举,以免碰到一个不认识的枚举值转换报错。
作者回复: 金额除了数字,还有币种的属性,不同的货币之间还存在转换,不同的货币单位之间也有差异,小数点后的位数也不同,这些都由Money类封装了,所以最好用Money来表示货币。
作者回复: 默认使用JDK内嵌的库,URLConnection是没有连接池等功能的,建议用HC或者OKHttp
作者回复: 因为这里正好提到了RestTemplate里对结果做序列化和反序列化,整个示例程序都不复杂,所以就顺道一起再看看,没有什么特殊用意。
作者回复: RestTemplateBuilder是做了很多额外的配置的,比如我怎么去支持@JsonComponent之类的,可以读一下RestTemplateBuilder 的代码,再RestTemplateAutoConfiguration里是怎么初始化RestTemplateBuilder的。
作者回复: 每次T是确定的么?还是T也不知道?如果不确定T,那你让RestTemplate怎么反序列化呢。或者你都是JSON的,不关心内容时就直接Result<String>回来。
作者回复: 你再试试复杂的泛型类型呢,是不是一样都能支持