记lombok得@Builder反序列化的坑

  |   0 评论   |   17 浏览

lombok是比较常用的jar包,提供很多方便的注解,像@Data,@Setter,@Builder等。但是在使用@Builder的时候,反序列化错误的问题,错误如下:
SerializationException: Could not read JSON:Can not construct instance of
image.png
错误很明显,是反序列化出问题了,是因为没有空的构造函数。
这个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类,如下
image.png
但是这样写,不使用PRC是可以反序列化成功的,所以只有通过RPC之后没有无参构造函数了。
可以在类上面添加以下注解:

@NoArgsConstructor
@AllArgsConstructor

这样即使是使用RPC也是没问题的。
所以大家在使用的时候需要注意,RPC提供出去的实体类尽量简单,可以不用lombok就不要用了,以防止出现意想不到的错误。

也可以关注我的公众号:程序之声
图片
关注公众号,领取更多资源

本文为博主原创文章,未经博主允许不得转载。

评论

发表评论