自看過Manning出版社的Spring Start Here後,一方面開始將Spring Boot和Spring MVC技術運用在手上的專案,另方面也對Spring框架除了Web開發以外的功能留下懸念,想找個閒暇時間,好好地研讀一下Spring Start Here的姐妹作Spring in Action。恰好工作上有需要研究反應式/響應式Web框架(Reactive Web Framework),簡單搜尋相關資料後,賓果!Spring生態系中有個Spring Webflux正符合要求,成為研讀Spring實戰, 6/e(簡體版)的契機。
在今日,Spring是Java語言中最重要的軟體框架,沒有之一。也因此Spring in Action成為Java開發者自學的祕笈。隨著Spring框架的不斷演進,特別在Spring 4後推出的Spring Boot,讓框架的設定與開發展現出跨次元般的進步。Spring in Action同步也出到了第六版,而簡體版的Spring實戰, 6/e是譯自第六版的Spring in Action,能確保學到最新、不過時的框架版本。此書也不囉嗦,不贅述像IOC、AOP這類Spring初級觀念,第一部份「Spring基礎」就切入應用範圍最廣的Web網站開發。歷經Spring Start Here的磨練,運用Spring Boot開發以Spring MVC為核心的專案已是小事一件。後續的Spring Data JDBC和JPA、Cassandra、MongoDB數據持久化,也只算是回顧Spring Data的總複習。
第二部份「Spring集成」中出現全書第一個亂流,第八章的Spring Security。書中採用的OAuth 2.0實作套件,是尚在測試的不穩定版本,即便直接從GitHub取回範例程式碼執行,依舊會出現令人氣餒的驗證失敗結果。最後求助Baeldung網站裡的教學文章,才在升級OAuth 2.0套件後,跨越第一個難關。其它像是發送異步訊息和Spring集成兩個章節,對於已經採用Apache Camel實作EAI應用的我來說,真的不禁莞爾一笑。這兩種Spring應用,簡直就是對Camel致敬(仿冒)的精簡版。因此雖然看到Spring有Spring集成的功能,未來面對企業資料整合的需求時,還是會採用已熟練且更完整的Camel框架來實作。
重點戲的第三部份「反應式Spring」是全書的精華所在,在Node.js橫空出世的向世界展現反應式Web框架的威力後,Spring也不落人後地推出Java世界裡的反應式Web框架Spring WebFlux。建基於反應式編程專案Project Reactor之上的WebFlux,由於其獨特的開發思維與撰寫風格,難以融入即有的指令式風格框架Spring MVC中。結果就是採用Spring開發Web應用時,有兩種完全平行又異曲同工的解決方案。Spring實戰, 6/e雖然用了兩個章節來介紹WebFlux如何實作出一個具體可用的Web,但反應式編程這個主題實在太新,更別說想要好好講述開發Web的方方面面,Spring Start Here可是用一整本書才講完Spring MVC。想要作者用短短兩個章節講述完整的反應式Web框架和反應式版本的JDBC(R2DBC),實在是強人所難。因此反應式Spring正是我第二個遇到的亂流,只好再度從網路上查閱其它先進分享的技術文章,學習如何使用WebFlux開發出一個完整的反應式Web REST API。只能說在WebFlux這個主題上Spring實戰, 6/e幫我開啟一個好的起頭,但要走的下去,得從其它輔助材料著手才更順利。
最後的「部署Spring」部份,則是介紹一些實務上選用的功能,像是監控與管理用的Spring Boot Actuator,是一個等同MBean的機制。當然Spring也少不了支援傳統的MBean,讓已經採用該工具的開發者不用浪費時間再實作Actuator。Spring專案程式碼的佈署與和Docker/Kubernetes的整合,更展現出Spring實戰, 6/e在主題規劃的全面性,畢竟未來的程式運行環境,有誰能逃得過被容器化哩?附錄介紹了如何使用各項工具建立一個新的Spring Boot專案,是對初學者非常貼心的作法,很多技術書籍都忘了環境建置這一步,往往是讓學習者最挫折進而選擇放棄的起因。對於Java開發者來說Spring實戰, 6/e是不可錯過的著作,不過最好是在讀過Spring Start Here再詳閱,免得略過一些基礎但重要的Spring觀念。

沒有留言:
張貼留言