通过FeignClient调用微服务提供的分页对象IPage报错的解决

作者:hu_xian_ 时间:2022-01-27 20:19:23 

问题描述

通过FeignClient调用微服务提供的分页对象IPage报错

{
"message": "Type definition error: [simple type, class com.baomidou.mybatisplus.core.metadata.IPage]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information\n at [Source: (PushbackInputStream); line: 1, column: 37] (through reference chain: com.test.invoice.vo.ResponseVO[\"data\"])"
}

解决办法

当前mybatis-plus 本不支持 IPage,使用Page即可

生产者controller

通过FeignClient调用微服务提供的分页对象IPage报错的解决

Feign-api接口定义

通过FeignClient调用微服务提供的分页对象IPage报错的解决

消费者,Feign-api 调用

通过FeignClient调用微服务提供的分页对象IPage报错的解决

feign返回IPage无法返回结果集

通过feign调用,服务提供者返回IPage,客户端无法获取到结果;主要原因就是jackson需要默认构造函数序列化;

@PostMapping(value ="/page",consumes = MediaType.APPLICATION_JSON_VALUE)
ResponseModel<IPage<CommentDTO>> loadCommentPage(@RequestBody Comment condition);

Mybatis-plus修改方式

IPage改成Page即可

spring-data 修改方式也是一样的,最简单就是自己实现IPage就可以了,也可以通过SpringMvcContract方式重造结果集

feign的几种可能性

1、接口直接被调用

2、接口直接被调用的同时其他模块也需要这个接口,那么其他模块就需要通过fegin调用

3、不会被直接调用,所有接口通过feign调用

基于以上三点,有如下可能性

1、在使用fegin时候,服务提供者到底应该直接返回ResponseModel(统一返回值)还是只返回结果?

1和3直接返回ResponseModel即可,2如果直接返回ResponseModel那么调用者就需要自己判断code或者直接返回给前段不做任何处理,如果直接返回结果那么直接被调用那个接口就无法统一返回值;建议直接写成俩个方法

来源:https://blog.csdn.net/hu_xian_/article/details/103961149

标签:FeignClient,微服务,分页对象,IPage
0
投稿

猜你喜欢

  • Swing常用组件之多行文本区JTextArea

    2023-11-08 14:16:49
  • SpringBoot如何返回Json数据格式

    2023-01-12 16:28:51
  • Java求一个分数数列的前20项之和的实现代码

    2021-08-22 14:59:58
  • Spring Cloud Config实现分布式配置中心

    2022-04-25 16:28:07
  • C语言实现自定义扫雷游戏(递归版)

    2023-11-03 02:12:36
  • Java设计模式之抽象工厂模式实例详解

    2023-11-29 04:04:57
  • flutter实现appbar下选项卡切换

    2023-06-21 13:35:24
  • Java ConcurrentHashMap的源码分析详解

    2023-05-02 02:16:21
  • Java设计模式之工厂模式案例详解

    2023-11-27 20:08:03
  • 图解Java线程的生命周期

    2022-04-12 15:16:10
  • Springboot与vue实现文件导入方法具体介绍

    2023-10-31 12:31:37
  • 简单了解Java多态向上转型相关原理

    2023-10-11 16:11:01
  • Android 6.0动态权限申请教程

    2023-09-26 16:43:56
  • JavaApi实现更新删除及读取节点

    2023-11-10 07:30:33
  • java模拟hibernate一级缓存示例分享

    2023-06-18 08:43:55
  • SpringBoot v2.2以上重复读取Request Body内容的解决方案

    2022-06-27 11:00:16
  • java集合Collection实现类解析ArrayList LinkedList及Vector

    2022-05-01 05:44:12
  • java springmvc实现验证码功能

    2022-09-07 12:12:41
  • Spring自动注入失败的解决方法

    2022-08-13 03:41:31
  • Java httpClient介绍以及使用示例

    2023-03-15 23:51:15
  • asp之家 软件编程 m.aspxhome.com