真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

SpringCloud系列(六)Feign客戶端的配置及使用-創(chuàng)新互聯(lián)

?Feign 是什么?
🙊Feign 是一個聲明式的 http 客戶端, 其主要的作用就是幫助我們實現(xiàn) http 的請求發(fā)送, 正如官網所說, Feign使編寫Java http客戶端更容易;
??為什么要用 Feign?
🙊🙊如在未學習 Feign 之前, 我們利用的是 RestTemplate 進行發(fā)起遠程的調用, 如下面的代碼所示:
String url = "http://providerservice/provider/" + consumer.getProviderId();
Provider provider = restTemplate.getForObject(url, Provider.class);
先寫出 url 路徑, 然后再利用 RestTemplate 發(fā)送 http 請求, 實現(xiàn)遠程的調用; 通過代碼也可以看出來這樣的方式存在代碼可讀性比較差, 編程體驗不是很好, 并且參數(shù)比較復雜, URL 不容易維護, 而 Feign 就是為了解決這個問題而生;
???為什么選擇 Feign?
🙊🙊🙊關于為什么要選擇 Feign, 如下圖官網所說: Feign 這個工具啊和 Jersey 和 CXF 一樣都是利用了 ReST 或者 SOAP 工具, 但是呢 Feign 允許我們程序猿在 http 庫里面自行寫代碼, 就像 Apache HC 一樣, 通過可定制的解碼器和錯誤處理方式將您的代碼連接到http API,可以寫入任何基于文本的http API, 并且開銷和代碼量是最少得.

在這里插入圖片描述

十年的河南網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整河南建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“河南網站設計”,“河南網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

Feign
  • 1 使用步驟
  • 2 自定義使用 Feign
    • 2.1 配置 Feign 日志的兩種方式
  • 3 Feign 性能優(yōu)化
  • 4 Feign 最佳實踐

1 使用步驟

步驟一: 引入 Feign 客戶端依賴;

org.springframework.cloudspring-cloud-starter-openfeign

步驟二: 在 consumer-service 的啟動類中添加注解 @EnableFeignClients 來開啟 Feign 的功能;
在這里插入圖片描述
步驟三: 開始編寫 Feign 客戶端;
我這里是新建了一個 feign 包, 然后在 clients 中聲明遠程調用的信息, 這里也是基于 Spring 的注解;

@FeignClient("providerservice")  // 服務名稱
public interface ProviderClient {@GetMapping("/provider/{id}")  // 請求方式及路徑
    provider findById(@PathVariable("id") Long id);
}

步驟四: 使用 Feign 客戶端來進行發(fā)送請求;
對比: 通過代碼數(shù)量就可以看得出簡單了很多!
在這里插入圖片描述

@Service
public class ConsumerService {@Resource
    private ConsumerMapper consumerMapper;
    @Resource
    private ConsumerClient consumerClient;
    
    public Consumer queryOrderById(Long consumerId) {// 1. 查詢訂單
        Consumer consumer = consumerMapper.findById(consumerId);
        // 2. 用 Feign 遠程調用
        Provider provider = consumerClient.findById(consumer.getProviderId());
        // 3. 封裝 user 到 Order
        consumer.setProvider(provider);
        // 4.返回
        return consumer;
    }
}
2 自定義使用 Feign

通常還會自定義一些配置來覆蓋其默認的配置, 如常用的修改日志的配置; 如下圖便是某些配置修改的類型及說明:
在這里插入圖片描述
關于具體使用我們以配置 Feign 日志為例子進行說明.

2.1 配置 Feign 日志的兩種方式

方式一: 文件配置方式;
在這里插入圖片描述

這里的 default 就是全局配置, 如果寫的是 consumerservice 則就是對此服務的配置, FULL 為日志級別;

方式二: 使用 java 代碼方式; 在 feign 包中加入 config 類, 添加相關的配置; 注意這里要聲明一下 bean;

public class DefaultFeignConfiguration {@Bean
    public Logger.Level logLevel() {return Logger.Level.BASIC;
    }
}

如果是全局配置, 則放在 @EnableFeignClients 這個注解里面:
在這里插入圖片描述
如果是局部配置, 就放在 @FeignClient 這個注解中;

@FeignClient(value = "providerservice", configuration = FeignClientsConfiguration.class)
public interface ProviderClient {@GetMapping("/provider/{id}")
    Provider findById(@PathVariable("id") Long id);
}
3 Feign 性能優(yōu)化

關于 Feign 的優(yōu)化主要體現(xiàn)在使用連接池代替默認的 URLConnection, 其次在日志設置要日志級別最好設置為 BASIC 或者是 NONE;
配置連接池方式:
步驟一: consumerservice 中引入 httpClient 依賴;

io.github.openfeignfeign-httpclient

步驟二: 配置連接池;
在這里插入圖片描述

4 Feign 最佳實踐

方式一: 將消費者的 FeignClient 和 提供者的 controller 定義統(tǒng)一的父接口作為標準, 這樣可以使得服務緊密耦合, 父接口參數(shù)列表中的映射也不會被繼承; 如下圖所示:
在這里插入圖片描述

方式二 (推薦): 將 Feign 客戶端當作業(yè)一個獨立的模塊, 并把所有的配置(如日志級別的配置) / 接口相關的信息等都放在這個模塊中, 其實上面我們做的工作就是將 feign 當做一個模塊來處理的, 這樣可以提供給所有的消費者去使用;
在這里插入圖片描述
具體步驟:
在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧


當前題目:SpringCloud系列(六)Feign客戶端的配置及使用-創(chuàng)新互聯(lián)
分享網址:http://weahome.cn/article/dspjoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部