spring cloud openfeign服务调用,返回对象结果不为null,而是空对象,对象里面的数据都是null


是由于:openfeign调用接口中与被调用方接口返回类型不一致导致的。

出现这种情况,非常大的可能是因为服务真实返回的对象数据结构和你实际接受的对象数据结构不一致。

举个例子,你的feign里面的方法是这样的:

UserInfoDetailVO obtain(@PathVariable("id") Serializable id);

但是服务实际的借口声明不是这样的,比如:

public ApiResult<UserInfoDetailVO> obtain(@PathVariable("id") Serializable id)

因为真实的服务不管有没有对象,都会返回数据,一个基础的数据包,但是里面没有实际想要的业务数据,因为总体返回数据不为null,框架去获取数据包里面能和feign方法声明的对象属性,没有获取到,属性就是null,但是结果对象是有的,所以造成了一个对象不为null,但是里面属性都是null的现象。

有的时候虽然: openfeign调用接口中与被调用方接口返回类型一致,但是那是出现了这个问题,那就是由于全局异常处理导致的返回类型转换了而导致的。

@ExceptionHandler(Exception.class)
    public WResult handleException(Exception e) {
        log.error(e.getMessage(), e);
        return WResult.newInstance().msg(e.getMessage());
    }

比如上面的obtain方法抛出Exception异常后,返回类型变成了WResult,所以推荐所有方法都用WResult来包装。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值