歡迎訪問我的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:
- 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一共有三種能力,下圖每一個紅色背景的節點代表一種具體的能力,稍后會詳細說明:
-
okhttp類型容易理解,只有一個jar文件:spring-cloud-square-retrofit.jar,用在最簡單的請求響應場景
-
retrofit的好處很多(簡潔易用,解耦,擴展性強,可搭配多種Json解析框架(例如Gson),支持RxJava),就不在本文展開了,博覽群書的您應該記得,retrofit無法獨立完成網絡操作,其底層還要依賴更加基礎的庫,這個特點在spring-cloud-square中也體現出來了:和okhttp搭配是常見的經典組合(安卓開發的同學一定很熟悉),或者和webflux搭配,用在響應式異步非阻塞場景;
-
看到這里,聰明的您應該得出一個結論:欣宸廢話太多...
-
您說的沒錯,下一篇咱們進入實戰環節,寫代碼體驗spring-cloud-square,欣宸原創,必不會辜負您的期待
你不孤單,欣宸原創一路相伴
歡迎關注公眾號:程序員欣宸
微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos