问题现象
由于最近看了一些effective java
的数据,使用lomok
的注解@Builder
导致了fegin
服务之间调用报反序列化错误
Caused by: Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of
cn.xxx.ErrorCode
(no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
由上面错误信息可以看出ErrorCode缺少默认无参构造函数导致。
问题分析
那什么原因导致了该问题?
@Data
@Builder
public class ErrorCode implements Serializable {
private Integer code;
private String msg;
}
编译上述代码后,class文件中无默认构造器,从而导致无法反序列化
解决方案
1.添加无参以及有参构造注解
@NoArgsCOntrutor
@AllArgsContructor // 不添加全部入参,上面注解会编译报错
2.不使用Builder装饰器方式,使用链式模式
@Accessors(chain=true)