前言 隨著Spring Boot2.0正式發佈,Spring WebFlux正式來到了Spring Boot大家族裡面。由於Spring WebFlux可以通過更少的線程去實現更高的併發和使用更少的硬體資源去實現擴展,我對此很感興趣。同時Angular6也發佈了,也想試試自己Angular的功底,便 ...
前言
隨著Spring Boot2.0正式發佈,Spring WebFlux正式來到了Spring Boot大家族裡面。由於Spring WebFlux可以通過更少的線程去實現更高的併發和使用更少的硬體資源去實現擴展,我對此很感興趣。同時Angular6也發佈了,也想試試自己Angular的功底,便基於Angular和Spring WebFlux做個一個簡單禮品管理系統的demo。至於angular和spring boot的集成可以參考該博客Angular和Spring Boot一起做個項目
響應式編程
響應式編程是一種面向數據流和變化傳播的編程範式。這意味著可以在編程語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值通過數據流進行傳播。個人通俗的理解為產生數據的行為放在一個數據流內,通過一些運算符將流中的數據進行適當的轉化,最終獲取該數據流中的數據並處理數據。我最早接觸響應式編程是在學習Angular2的時候瞭解到rxjs,這是ReactiveXz在js上的實現版本,其java版本為rxjava。
學習建議
- 由於Spring WebFlux是基於Reactor庫,因此建議先學習一下Reactor,瞭解響應式編程的概念,能區分Mono和Flux之間的區別。其官網鏈接為http://projectreactor.io。
- 如果能有餘力,可以考慮學一下RxJava2。
- 儘可能使用基於事件的編程思維,少寫同步的代碼。
對Spring WebFlux的看法
- 實際開發中如果Spring MVC已經能夠滿足需求,還是不要使用Spring WebFlux,除非你僅僅是在Controller層中將Service的返回介面包裝成Mono或者Flux,
- 如果使用Spring WebFlux,儘量還是使用基於 Java 註解的方式,尤其是當請求參數比較複雜的時候,基於 Java 8 的 lambda 表達式的函數式編程模型的方式是真的不好用!!!