五分鐘搞懂spring-cloud-square

程式設計師欣宸發表於2021-10-29

歡迎訪問我的GitHub

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

初識spring-cloud-square

  • 2021年4月13日,spring在官方部落格上宣佈,一個名為Spring Cloud Square的專案正式釋出首個公開可用的里程碑版本:

在這裡插入圖片描述

  • 熱門視訊網站於2021年7月7日釋出一段介紹Spring Cloud Square的視訊,如下圖,大佬Josh Long給我們演示瞭如何用Spring Cloud Square將SpringBoot應用的HTTP客戶端做得更智慧,B站搜尋spring-cloud-square即可

在這裡插入圖片描述

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

在這裡插入圖片描述

  • 如下圖,Java庫還真不少呢,紅框中的兩位:okhttp和retrofit,都是大名鼎鼎:

在這裡插入圖片描述

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

  • 另外關鍵字還有spring-cloud,再加上okhttp和retrofit都和網路訪問有關,spring-cloud-square的身份就更具體了:藉助square的庫,方便Spring Cloud環境中的服務呼叫!

提前小結

  • 為避免因廢話太多而被聰明的您拋棄,現在就小結什麼是spring-cloud-square:
  1. spring-cloud-square的重點是整合
  2. Spring Cloud LoadBalance提供了根據服務名獲取對應IP和埠的能力
  3. OkHttpClient和Retrofit是遠端訪問的框架
  4. Spring Cloud LoadBalance和OkHttpClient組合的話,在用OkHttpClient遠端訪問的時候可以用服務名做地址了,具體的IP和埠由Spring Cloud LoadBalance負責獲取
  5. Spring Cloud LoadBalance和Retrofit組合,也是同樣的道理
  6. 於是,Spring官方就推出了上述組合,用AutoConfig再加少量程式碼(例如OkHttpClient新增Interceptor,功能是將服務名替換成IP和埠),將上述關鍵技術做組合,再包裝成jar,例如spring-cloud-square-okhttp.jar就是 Spring Cloud LoadBalancer與OkHttpClient的組合
  7. 我們們開發SpringBoot應用時,直接依賴spring-cloud-square-okhttp.jar,再新增少量程式碼(如Builder例項化),就能方便的遠端呼叫了;
  8. 這種組合型jar包,Spring一口氣做了三個,然後起個名字叫做spring-cloud-square,然後,您愛用哪個就用哪個
  9. 我們們開發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一共有三種能力,下圖每一個紅色背景的節點代表一種具體的能力,稍後會詳細說明:

在這裡插入圖片描述

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

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

  • 看到這裡,聰明的您應該得出一個結論:欣宸廢話太多...

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

你不孤單,欣宸原創一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 資料庫+中介軟體系列
  6. DevOps系列

歡迎關注公眾號:程式設計師欣宸

微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界...
https://github.com/zq2599/blog_demos

相關文章