FeignClient與RestTemplate的區別比較簡單研究

JAVA 項目中接口調用怎麼做 ?

  • Httpclient
  • Okhttp
  • Httpurlconnection
  • RestTemplate

上面是最常見的幾種用法,我們今天要介紹的用法比上面的更簡單,方便,它就是Feign

Feign是一個聲明式的REST客戶端,它的目的就是讓REST調用更加簡單。

Feign提供了HTTP請求的模板,通過編寫簡單的接口和插入註解,就可以定義好HTTP請求的參數、格式、地址等信息。

而Feign則會完全代理HTTP請求,我們只需要像調用方法一樣調用它就可以完成服務請求及相關處理。

SpringCloud對Feign進行了封裝,使其支持SpringMVC標準註解和HttpMessageConverters。

Feign可以與Eureka和Ribbon組合使用以支持負載均衡。

 

區別:

在預訂微服務中,有一個同步呼叫票價(Fare)。RestTemplate是用來製作的同步呼叫。使用RestTemplate時,URL參數是以編程方式構造的,數據被髮送到其他服務。在更復雜的情況下,我們將不得不RestTemplate深入到更低級別的API提供的甚至是API 的細節。

Feign是Spring Cloud Netflix庫,用於在基於REST的服務調用上提供更高級別的抽象。Spring Cloud Feign在聲明性原則上工作。使用Feign時,我們在客戶端編寫聲明式REST服務接口,並使用這些接口來編寫客戶端程序。開發人員不用擔心這個接口的實現。這將在運行時由Spring動態配置。通過這種聲明性的方法,開發人員不需要深入瞭解由HTTP提供的HTTP級別API的細節的RestTemplate。

總結:

也就是說FeignClient簡化了請求的編寫,且通過動態負載進行選擇要使用哪個服務進行消費,而這一切都由Spring動態配置實現,我們不用關心這些,只管使用方法即可。再說,就是簡化了編寫,RestTemplate還需要寫上服務器IP這些信息等等,而FeignClient則不用。

不過話又再說回來,其實RestTemplate同樣可以簡化到使用FeignClient那樣簡單,無非就是自己封裝多一層去實現而已,所以,我個人覺得沒有太多絕對,只是看你的業務需求怎麼定位這個選擇而已。

轉自:https://www.cnblogs.com/EasonJim/p/8321355.html

參考:

http://blog.csdn.net/u010889990/article/details/78673273

https://segmentfault.com/a/1190000009229438

https://www.packtpub.com/mapt/book/application_development/9781786466686/5/ch05lvl1sec57/feign-as-a-declarative-rest-client

https://www.jianshu.com/p/3d597e9d2d67

http://www.cnblogs.com/duanxz/p/7516676.html

https://www.cnblogs.com/duanxz/p/3510622.html

https://www.jianshu.com/p/270f3cd658f1

https://zhuanlan.zhihu.com/p/26400247

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章