lombok是比较常用的jar包,提供很多方便的注解,像@Data,@Setter,@Builder等。但是在使用@Builder的时候,反序列化错误的问题,错误如下:
SerializationException: Could not read JSON:Can not construct instance of
错误很明显,是反序列化出问题了,是因为没有空的构造函数。
这个DTO是通过RPC返回的,消费者这边拿到数据之后把这个DTO放到了redis进行缓存,再次获取的时候就报错了。
DTO的伪代码如下:
@Data
@Builder
public class TestDTO implements Serializable {
private static final long serialVersionUID = -6908350866963781362L;
private String name;
private Integer id;
}
查看class类,如下
但是这样写,不使用PRC是可以反序列化成功的,所以只有通过RPC之后没有无参构造函数了。
可以在类上面添加以下注解:
@NoArgsConstructor
@AllArgsConstructor
这样即使是使用RPC也是没问题的。
所以大家在使用的时候需要注意,RPC提供出去的实体类尽量简单,可以不用lombok就不要用了,以防止出现意想不到的错误。
本文为博主原创文章,未经博主允许不得转载。
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载