
如图,这是调用方的Feign远程调用语句。被调用方的控制台上已经出现了Feign被正确处理的日志,但是回到调用方这边就报了空指针异常。经排查发现问题出在响应类上,即
BaseResponse<UserViewMultiResponse>
其中有些类没有无参数的构造函数,个人猜测Feign在处理响应数据时可能需要调用响应类的无参数构造函数来创建对象。因此如果响应类没有无参数的构造函数时,便会导致处理异常,从而报空指针异常。
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BaseResponse<T>
{
private int code;
private String message;
private T data;
private LocalDateTime timestamp;
}
@Data
public class UserViewMultiResponse
{
private List<UserViewDTO> userViews;
public UserViewMultiResponse(List<UserViewDTO> userViews)
{
this.userViews = userViews;
}
public UserViewMultiResponse()
{
// 在Feign远程调用中,如果响应数据没有无参构造函数,则无法正常序列化,会报空指针异常
}
}
@Data
public class UserViewDTO
{
private Long userId;
private String nickname;
private String avatarUrl;
private OnlineStatus onlineStatus;
private AccountStatus accountStatus;
private LocalDateTime lastOnline;
public UserViewDTO(Long userId, String nickname, String avatarUrl, OnlineStatus onlineStatus, AccountStatus accountStatus, LocalDateTime lastOnline)
{
this.userId = userId;
this.nickname = nickname;
this.avatarUrl = avatarUrl;
this.onlineStatus = onlineStatus;
this.accountStatus = accountStatus;
this.lastOnline = lastOnline;
}
public UserViewDTO()
{
// 在Feign远程调用中,如果响应数据没有无参构造函数,则无法正常序列化,会报空指针异常
}
}
如上面的代码,我重载了无参数的构造函数,最终代码能够正确运行了。
7516

被折叠的 条评论
为什么被折叠?



