五分鐘搞懂spring-cloud-square

歡迎訪問我的GitHub

這裡分類和彙總了欣宸的全部原創(含配套原始碼):https://github。com/zq2599/blog_demos

初識spring-cloud-square

2021年4月13日,spring在

官方部落格

上宣佈,一個名為

Spring Cloud Square

的專案正式釋出首個公開可用的里程碑版本:

五分鐘搞懂spring-cloud-square

熱門影片網站於2021年7月7日釋出一段介紹

Spring Cloud Square

的影片,如下圖,大佬

Josh Long

給我們演示瞭如何用Spring Cloud Square將SpringBoot應用的HTTP客戶端做得更智慧,B站搜尋

spring-cloud-square

即可

五分鐘搞懂spring-cloud-square

在介紹spring-cloud-square之前,咱們先去了解一下square,會對咱們後面的理解有很大幫助,網站是:https://square。github。io,如下圖,這是個開源網站,向社群貢獻了很多庫,到底有哪些庫呢?點選下圖紅框中的Java試試:

五分鐘搞懂spring-cloud-square

如下圖,Java庫還真不少呢,紅框中的兩位:okhttp和

retrofit

,都是大名鼎鼎:

五分鐘搞懂spring-cloud-square

至此,聰明的您應該猜到了:spring-cloud-square和上面提到的square有關,具體的說應該是和square的java庫有關,例如將okhttp和retrofit與SpringBoot的自動裝配結合,玩出點花樣來,

另外關鍵字還有

spring-cloud

,再加上okhttp和retrofit都和網路訪問有關,spring-cloud-square的身份就更具體了:

藉助square的庫,方便Spring Cloud環境中的服務呼叫!

提前小結

為避免因廢話太多而被聰明的您拋棄,現在就小結什麼是spring-cloud-square:

spring-cloud-square的重點是整合

Spring Cloud LoadBalance提供了根據服務名獲取對應IP和埠的能力

OkHttpClient和Retrofit是遠端訪問的框架

Spring Cloud LoadBalance和OkHttpClient組合的話,在用OkHttpClient遠端訪問的時候可以用服務名做地址了,具體的IP和埠由Spring Cloud LoadBalance負責獲取

Spring Cloud LoadBalance和Retrofit組合,也是同樣的道理

於是,Spring官方就推出了上述組合,用AutoConfig再加少量程式碼(例如OkHttpClient新增Interceptor,功能是將服務名替換成IP和埠),將上述關鍵技術做組合,再包裝成jar,例如spring-cloud-square-okhttp。jar就是 Spring Cloud LoadBalancer與OkHttpClient的組合

咱們開發SpringBoot應用時,直接依賴spring-cloud-square-okhttp。jar,再新增少量程式碼(如Builder例項化),就能方便的遠端呼叫了;

這種組合型jar包,Spring一口氣做了三個,然後起個名字叫做

spring-cloud-square

,然後,您愛用哪個就用哪個

咱們開發SpringBoot應用時,直接依賴spring-cloud-square-okhttp。jar,再新增少量程式碼(如Builder例項化),就能方便的遠端呼叫了;

看到這裡,聰明的您應該明白了,spring-cloud-square原來這麼簡單,只是將註冊中心和和網路工具整合,為應用開發提供了一些輔助而已,實際上看過spring-cloud-square原始碼之後也確實如此,不過spring-cloud-square目前還只是孵化專案,由於Spring技術棧在不斷演進,相信它會越來越符合官方的描述:Smart,做更智慧的HTTP客戶端

接下來再看看spring-cloud-square提供的具體的能力有哪些

spring-cloud-square的具體能力

如下圖所示,spring-cloud-square一共有三種能力,下圖每一個紅色背景的節點代表一種具體的能力,稍後會詳細說明:

五分鐘搞懂spring-cloud-square

okhttp型別容易理解,只有一個jar檔案:spring-cloud-square-retrofit。jar,用在最簡單的請求響應場景

retrofit的好處很多(簡潔易用,解耦,擴充套件性強,可搭配多種Json解析框架(例如Gson),支援RxJava),就不在本文展開了,博覽群書的您應該記得,retrofit無法獨立完成網路操作,其底層還要依賴更加基礎的庫,這個特點在spring-cloud-square中也體現出來了:和okhttp搭配是常見的經典組合(安卓開發的同學一定很熟悉),或者和webflux搭配,用在響應式非同步非阻塞場景;

看到這裡,聰明的您應該得出一個結論:

欣宸廢話太多…

您說的沒錯,下一篇咱們進入實戰環節,寫程式碼體驗spring-cloud-square,欣宸原創,必不會辜負您的期待

歡迎關注頭條號:程式設計師欣宸

學習路上,你不孤單,欣宸原創一路相伴。。。