最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Cloud使用Feign進行遠程調用的操作指南

 更新時間:2025年02月18日 10:01:41   作者:Dream_sky分享  
本文介紹了Feign作為聲明式HTTP客戶端在SpringCloud中的使用,從簡介、對比RestTemplate的問題、使用步驟,到日志配置、性能優(yōu)化和實際應用進行了詳細講解,包括如何通過Feign簡化接口調用,以及解決啟動時找不到FeignClient的問題,需要的朋友可以參考下

一、Feign簡介

Feign官網(wǎng):https://github.com/OpenFeign/feign

Fegin是聲明式、模塊化的Http客戶端,可以幫助我們快捷優(yōu)雅的調用HTTP接口。在SpringCloud中可以很方便的創(chuàng)建一個Feign客戶端,只需聲明一個接口,并加上對應的注解就能完成對HTTP接口的調用。

在這里插入圖片描述

二、RestTemplate方式調用存在問題

可讀性差,參數(shù)復雜難以維護

   //2遠程查詢用戶信息
   String url="http://provider-server/provider/"+order.getUserId();
   
   //3. 發(fā)起調用
   User user = restTemplate.getForObject(url, User.class);

三、Feign的使用步驟

在服務消費者端添加如下

3.1 引入依賴

  <!-- 加入feign的依賴 -->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-openfeign</artifactId>
     </dependency>

3.2 添加@EnableFeignClients注解

在啟動類或者配置類添加

@EnableFeignClients

3.3 編寫FeignClient接口

@FeignClient("provider-server")
public interface ProviderServeClient {
    /**
     * 根據(jù)id查詢用戶信息
     */
    @GetMapping("/provider/{id}")
    User queryById(@PathVariable("id") Long id);

}

  • 服務名稱:provider-server
  • 請求路徑:/provider/{id}
  • 請求方式:GET
  • 請求參數(shù):Long id
  • 返回值類型:User

3.4 使用Feign客戶端代用RestTemplate

    @Autowired
    private ProviderServeClient providerServeClient;

    /**
     * 根據(jù)id查詢訂單并返回
     */
    @Override
    public Order queryOrderById(Long orderId) {
        // 1.查詢訂單
        Order order = orderMapper.findById(orderId);

        //2遠程查詢用戶信息
//        String url="http://provider-server/provider/"+order.getUserId();
        //2. 發(fā)起調用
//        User user = restTemplate.getForObject(url, User.class);

        User user = providerServeClient.queryById(order.getUserId());

        //3. 存入order
        order.setUser(user);
        // 4.返回
        return order;
    }

啟動調用成功

在這里插入圖片描述

四、日志配置

4.1 日志級別介紹

在這里插入圖片描述

1. NONE: 不記錄任何日志信息,默認值

2. BASIC: 僅記錄請求的方法,URL以及響應狀態(tài)碼和執(zhí)行時間

3. HEADERS: 在BASIC的基礎上,增加了請求和響應頭信息

4. FULL: 記錄所有請求和響應的明細,包括頭信息,請求體,元數(shù)據(jù)

4.2 配置日志

方式一: 配置文件方式

全局配置

feign:
  client:
    config:
      default: # 全局的配置
        loggerLevel: BASIC 

局部配置

feign:
  client:
    config:
      provider-server: # 寫服務名稱,則針對某個微服務的配置
        loggerLevel: FULL

方式二: java代碼方式

public class FeignClientConfiguration {
    public Logger.Level feignLogLevel(){
        return Logger.Level.BASIC;
    }
}

全局配置,添加到@EnableFeignClients注解中

@EnableFeignClients(defaultConfiguration = FeignClientConfiguration.class)

局部配置,添加到服務對應的@FeignClient注解中

@FeignClient(value = "provider-server",configuration = FeignClientConfiguration.class)

五、Feign的性能優(yōu)化

Feign底層的客戶端實現(xiàn):

  1. URLConnection :默認實現(xiàn),不支持連接池
  2. Apache HttpClient:支持連接池
  3. OKHttp : 支持鏈接池
  • 使用連接池代替默認的URLConnection
  • 日志級別最好使用BASIC或者NONE

引入依賴

        <!--httpClient的依賴 -->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>

配置連接池

  httpclient:
    enabled: true # 開啟feign對HttpClient的支持
    max-connections: 200 # 最大的連接數(shù)
    max-connections-per-route: 30 # 每個路徑的最大連接數(shù)

六、Feign的實際應用

繼承方式,給消費者的FeginClient和提供者的controller定義統(tǒng)一的父接口(不推薦)

缺點:

耦合度高參數(shù)無法繼承

模塊抽-----取將FeignClient抽取為獨立模塊,并把所有接口有關的配置都放到這個模塊中,提供給所有消費者使用,這樣就不用每個消費者都定義自己的Feign客戶端,避免重復開發(fā)

抽取啟動可能會報錯如下:
ProviderServeClient沒有找到

在這里插入圖片描述

Description:

Field providerServeClient in com.xing.service.impl.ConsumerServiceImpl required a bean of type 'com.api.clients.ProviderServeClient' that could not be found.

The injection point has the following annotations:
	- @org.springframework.beans.factory.annotation.Autowired(required=true)

原因:

  1. 啟動類所在包:package com.xing
  2. fegin模塊客戶端所在包為:package com.api;
  3. Spring Boot啟動默認掃描啟動類所在包及其所有子包,而fegin客戶端所在包沒有掃描到,所以報錯ProviderServeClient沒有找到

解決方案:

指定FeignClient所在包

@EnableFeignClients(basePackages = "com.api")

指定FeignClient字節(jié)碼

@EnableFeignClients(clients = {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->ProviderServeClient.class})

啟動成功

在這里插入圖片描述

測試接口調用成功

在這里插入圖片描述

以上就是Spring Cloud使用Feign進行遠程調用的操作指南的詳細內容,更多關于Spring Cloud Feign遠程調用的資料請關注腳本之家其它相關文章!

相關文章

  • 深入淺出的學習Java ThreadLocal

    深入淺出的學習Java ThreadLocal

    本文會基于實際場景介紹ThreadLocal如何使用以及內部實現(xiàn)機制。 具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java如何高效使用OpenCV圖像處理庫

    Java如何高效使用OpenCV圖像處理庫

    OpenCV是一個開源的計算機視覺庫,它提供了一系列豐富的圖像處理和計算機視覺算法,包括圖像讀取、顯示、濾波、特征檢測、目標跟蹤等功能,這篇文章主要給大家介紹了關于Java如何高效使用OpenCV圖像處理庫的相關資料,需要的朋友可以參考下
    2024-03-03
  • Springboot整合logback的詳細教程

    Springboot整合logback的詳細教程

    這篇文章主要介紹了Springboot整合logback的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧大全

    Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧大全

    在Java中QueryWrapper是MyBatis-Plus框架中的一個查詢構造器,它提供了豐富的查詢方法,其中包括and和or方法,可以用于構建復雜的查詢條件,這篇文章主要給大家介紹了關于Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧的相關資料,需要的朋友可以參考下
    2024-07-07
  • SpringBoot + Mybatis-plus實戰(zhàn)之Mybatis-plus的一級緩存、二級緩存

    SpringBoot + Mybatis-plus實戰(zhàn)之Mybatis-plus的一級緩存、二級緩存

    這篇文章主要介紹了SpringBoot + Mybatis-plus實戰(zhàn)之Mybatis-plus的一級緩存、二級緩存,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 使用JavaSE來模擬斗地主

    使用JavaSE來模擬斗地主

    這篇文章主要介紹了使用JavaSE來模擬斗地主,對棋牌游戲有研究的同學可以參考一下
    2021-04-04
  • mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程

    mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程

    這篇文章主要為大家詳細介紹了mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 如何將Java枚舉名稱作為注解的屬性值實現(xiàn)詳解

    如何將Java枚舉名稱作為注解的屬性值實現(xiàn)詳解

    這篇文章主要為大家介紹了如何將Java枚舉名稱作為注解的屬性值實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Java稀疏數(shù)組的應用實踐

    Java稀疏數(shù)組的應用實踐

    本文主要介紹了Java稀疏數(shù)組的應用實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • springboot封裝JsonUtil,CookieUtil工具類代碼實例

    springboot封裝JsonUtil,CookieUtil工具類代碼實例

    這篇文章主要介紹了springboot封裝JsonUtil,CookieUtil工具類過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論

苍溪县| 湟源县| 乌拉特中旗| 大田县| 本溪市| 吉首市| 奎屯市| 佛冈县| 汽车| 襄樊市| 邢台市| 雷波县| 苗栗县| 泰兴市| 柘城县| 安西县| 太谷县| 大同市| 通化县| 平阴县| 平昌县| 黑水县| 尤溪县| 和田市| 苏尼特左旗| 新巴尔虎左旗| 柳江县| 眉山市| 抚松县| 迁西县| 承德县| 二手房| 桑植县| 湖南省| 汝南县| 安陆市| 罗源县| 达拉特旗| 察隅县| 镇安县| 瓮安县|