国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微服務(wù)之間Feign調(diào)用無法解析IPage報錯問題:Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage

這篇具有很好參考價值的文章主要介紹了微服務(wù)之間Feign調(diào)用無法解析IPage報錯問題:Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

cannot construct instance of `com.baomidou.mybatisplus.core.metadata.ipage`,各大實戰(zhàn)問題分析,微服務(wù),架構(gòu),云原生
文章來源地址http://www.zghlxwxcb.cn/news/detail-859925.html

一、前言

  • 最新在做一個對外提供基礎(chǔ)信息的需求,我在A服務(wù)中寫了一個分頁接口,本以為很簡單的我在B服務(wù)用 Feign 調(diào)用一下就可以了。
  • 可想并沒有這么簡單,報錯了:
  • cannot construct instance of `com.baomidou.mybatisplus.core.metadata.ipage`,各大實戰(zhàn)問題分析,微服務(wù),架構(gòu),云原生
  • 從源碼中我們可以看到:這里是分頁,而 com.baomidou.mybatisplus.core.metadata.IPage是一個接口(interface),源代碼如下:
  • cannot construct instance of `com.baomidou.mybatisplus.core.metadata.ipage`,各大實戰(zhàn)問題分析,微服務(wù),架構(gòu),云原生

二、分析

  • 因為跨服務(wù)會涉及 http 對其進行序列化和得到字符串數(shù)據(jù)后的反序列化操作,這樣別的模塊在調(diào)用到我這里后得到數(shù)據(jù),序列化成字符串通過IO輸出流傳回去再反序列化成Class不能構(gòu)建實例,但IPage是個接口啊,他到了那頭有沒有實現(xiàn),他怎么辦,所以說,只能報這個錯Type definition error

三、解決方案

1、使用 Page 進行接收,將原有的IPage改掉即可

  • 這個比較簡單這里不做擴展

2、進行序列化處理

  • 把他們放在工程代碼中的 config 包下即可
  1. IPage 反序列化類:IPageDeserializer
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
 
import java.io.IOException;
 
public class IPageDeserializer extends StdDeserializer<IPage> {
    protected IPageDeserializer(Class<?> vc) {
        super(vc);
    }
    
    @Override
    public IPage deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        JsonNode node = p.getCodec().readTree(p);
        String s  = node.toString();
        ObjectMapper om = new ObjectMapper();
        Page page = om.readValue(s,Page.class);
        return page;
    }
}
  1. WebDataConvertConfig 類
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
 
import java.util.Arrays;
import java.util.List;
 
@Configuration
public class WebDataConvertConfig extends WebMvcConfigurationSupport {
 
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(mappingJackson2HttpMessageConverter());
        super.configureMessageConverters(converters);
    }
 
    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 
        SimpleModule module = new SimpleModule();
        module.addDeserializer(IPage.class, new IPageDeserializer(IPage.class));
        mapper.registerModule(module);
 
        converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON_UTF8, MediaType.APPLICATION_OCTET_STREAM));
        converter.setObjectMapper(mapper);
 
        return converter;
    }
}

四、總結(jié)

  1. 以上方法均測試有效
  2. 參考文章:
    1. https://blog.csdn.net/FlyCloudLee/article/details/126640149
    2. https://blog.csdn.net/SSHLY3/article/details/122302919

到了這里,關(guān)于微服務(wù)之間Feign調(diào)用無法解析IPage報錯問題:Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 各個微服務(wù)模塊之間互相依賴調(diào)用的問題

    各個微服務(wù)模塊之間互相依賴調(diào)用的問題

    首先是模塊之間不能夠循環(huán)引用,否則會報循環(huán)依賴引入的錯誤。 沒有了模塊之間的相互依賴,在項目中這兩個模塊是相互調(diào)用的,分別各自定義相應(yīng)的Feign接口,如下: 最開始寫的運行報錯的代碼如下: 報錯信息,如下: 報錯的原因是這里定義了兩個Feign接口,都是調(diào)用

    2024年02月11日
    瀏覽(20)
  • feign微服務(wù)之間傳遞請求頭數(shù)據(jù)

    feign微服務(wù)之間傳遞請求頭數(shù)據(jù)

    直接在微服務(wù)遠程調(diào)用中獲取請求頭數(shù)據(jù)不能直接獲取到.為什么? 看源碼 默認情況下feign遠程調(diào)用的時候不會傳遞請求頭! 遠程調(diào)用源碼: 每一次遠程請求的時候都創(chuàng)建了一個新的Request Template對象,在該對象中不包含之前的請求頭數(shù)據(jù) 解決方案: 方案一:在feign接口上添加對應(yīng)

    2024年02月06日
    瀏覽(22)
  • 關(guān)于使用Feign來實現(xiàn)微服務(wù)之間的文件下載

    在微服務(wù)當中,不同的服務(wù)之間需要進行通信,不乏微服務(wù)之間使用feign進行文件的下載上傳使用場景。下邊介紹如何使用Feign來進行微服務(wù)之間的下載excel 背景 :前兩天做的一個需求,需要專門為材積信息而新啟一個服務(wù),其他系統(tǒng)調(diào)用此服務(wù)來進行獲取產(chǎn)品的一些材積信

    2024年02月14日
    瀏覽(22)
  • 【Java項目】SpringCloud項目注冊到Nacos中心時顯示的是內(nèi)網(wǎng)IP導(dǎo)致不同服務(wù)器之間無法互相調(diào)用接口的解決并發(fā)

    【Java項目】SpringCloud項目注冊到Nacos中心時顯示的是內(nèi)網(wǎng)IP導(dǎo)致不同服務(wù)器之間無法互相調(diào)用接口的解決并發(fā)

    微服務(wù)項目地址—動動你發(fā)財?shù)男∈贮c一個stars吧 出現(xiàn)這個問題是之前我也就遇到過的,這個問題的情況就是: 我們知道微服務(wù)項目是可以把不同的項目部署在不同的服務(wù)器上從而減少某一臺服務(wù)器的壓力,我們只需要為每一個服務(wù)配置一個注冊中心即可,然后一個服務(wù)需要

    2024年02月16日
    瀏覽(30)
  • 微服務(wù)遠程調(diào)用Feign

    微服務(wù)遠程調(diào)用Feign

    目錄 RPC概述 什么是Feign? RibbonFeign對比 Feign的設(shè)計架構(gòu) Spring Cloud Alibaba快速整合Feign Spring Cloud Feign擴展 日志配置 契約配置 通過攔截器實現(xiàn)參數(shù)傳遞 自定義攔截器實現(xiàn)認證邏輯 超時時間配置 微服務(wù)之間如何方便優(yōu)雅的實現(xiàn)服務(wù)間的遠程調(diào)用? RPC 全稱是 Remote Procedure Call ,

    2024年03月14日
    瀏覽(17)
  • 【微服務(wù)】Feign遠程調(diào)用

    【微服務(wù)】Feign遠程調(diào)用

    ?????????個人主頁: 五敷有你 ?????? ???系列專欄: 微服務(wù) ??穩(wěn)中求進,曬太陽 先來看我們以前利用RestTemplate發(fā)起遠程調(diào)用的代碼: 存在下面的問題: 代碼可讀性差,編程體驗不統(tǒng)一 參數(shù)復(fù)雜URL難以維護 Feign是一個聲明式的http客戶端,官方地址:GitHub - OpenF

    2024年03月28日
    瀏覽(42)
  • 服務(wù)調(diào)用---------Ribbon和Feign

    服務(wù)調(diào)用---------Ribbon和Feign

    目錄 ??????? 1、Ribbon 1.1 Ribbon簡介 1.2 Ribbon負載均衡 負載均衡原理 負載均衡策略 Ribbon和Nginx的區(qū)別 1.3 服務(wù)調(diào)用和Ribbon負載均衡實現(xiàn) 2、FeignopenFeign 3、Feign支持的配置 日志功能 ?連接池 ?feign-api遠程包 1.1 Ribbon簡介 Ribbon是一個用于 客戶端負載均衡的組件 ,它是Netfl

    2024年02月14日
    瀏覽(16)
  • 服務(wù)調(diào)用Ribbon,LoadBalance,Feign

    服務(wù)調(diào)用Ribbon、Fegin Ribbon實現(xiàn)負載均衡的原理 1:LoadBalancerAutoConfiguration這個類,這個類主要做的就是把LoadBalancer攔截器封裝到RestTemplte攔截器集合里面去。 2:然后在代碼里面調(diào)用restTemplate.getForObject或者其他方法的時候,就會調(diào)用到這個攔截器。 3:在LoadBalancer攔截器類中,

    2024年01月22日
    瀏覽(13)
  • 【微服務(wù)】SpringCloud之Feign遠程調(diào)用

    【微服務(wù)】SpringCloud之Feign遠程調(diào)用

    ??浩澤學(xué)編程 :個人主頁 ??? 推薦專欄 :《深入淺出SpringBoot》《java對AI的調(diào)用開發(fā)》 ??????????????《RabbitMQ》《Spring》《SpringMVC》《項目實戰(zhàn)》 ??學(xué)無止境,不驕不躁,知行合一 使用Feign遠程調(diào)用代替RestTemplate遠程調(diào)用。 使用RestTemplate發(fā)起遠程調(diào)用: 雖然在引

    2024年04月15日
    瀏覽(23)
  • 微服務(wù)服務(wù)間調(diào)用組件Feign使用介紹、原理、優(yōu)化技巧

    Feign是一個聲明式的Web Service客戶端。它讓微服務(wù)之間的調(diào)用變得更簡單。Feign具有可插拔式的注解支持,包括Feign 注解和JAX-RS注解。Feign還支持可插拔的編碼器和解碼器。Spring Cloud增加了對Spring MVC注解的支持,并且也支持Spring WebFlux。 Feign可以與Eureka和Ribbon組合使用以支持負載均

    2024年02月06日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包