springboot微服务使用Feign远程调用失败

记录一次springboot微服务使用Feign远程调用失败

Spring Boot 使用Feign 远程调用失败

1. 源码

最近在学习Spring Boot,在微服务的调用时使用到了 Feign,话不多说直接上代码

@FeignClient(value = FeServiceList.FE_SERVICE_MANAGE_CMS)
public interface CmsPageClient {
    @PostMapping("/cms/page/save")
    CmsPageResult save(@RequestBody CmsPage cmsPage);
}

使用 @FeignClient 注解,配置需要调用的微服务名称,编写接口方法。 项目结构是前后端分离的,统一返回 json。

这是接口返回值对象

@Data
public class CmsPageResult extends ResponseResult {
    CmsPage cmsPage;
    public CmsPageResult(ResultCode resultCode, CmsPage cmsPage) {
        super(resultCode);
        this.cmsPage = cmsPage;
    }
}

2. 遇到的问题

org.springframework.http.converter.HttpMessageNotReadableException: 
JSON parse error: Cannot construct instance of `com.fe.manage_course.client.CmsPageResult`, 
problem: `java.lang.NullPointerException`; nested exception is com.fasterxml.jackson.databind.exc.ValueInstantiationException: 
Cannot construct instance of `com.fe.manage_course.client.CmsPageResult`

大概意思Json解析出错,不能为CmsPageResult构造一个实例。

3. 解决方法

因为CmsPageResult没有显示的空参构造,只有有参构造,所以spring不会提供默认的空参构造。

项目中使用的Lombok,所以只需要在类上添加 @NoArgsConstructor

@Data
@NoArgsConstructor
public class CmsPageResult extends ResponseResult {
    CmsPage cmsPage;
    public CmsPageResult(ResultCode resultCode, CmsPage cmsPage) {
        super(resultCode);
        this.cmsPage = cmsPage;
    }
}

没有使用Lombok,手动加上空参构造即可。

也算是小小的 Feign坑 吧!!!

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值