領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多在SpringOne2GX 2015大會上,Juergen 宣佈了 Spring Framework 5的計劃,重點將放在響應式架構上。相關工作已在進行中,並且自那時以來發生了許多變化!
在最基本的層面上,響應式程式設計模型允許編寫非阻塞服務和應用程式。這需要從編寫命令式邏輯轉變為非同步、非阻塞、函式式風格的程式碼,特別是在與外部資源互動時。
大多數 Java Web 應用程式都構建在 Servlet API 之上,該 API 最初是為同步和阻塞式語義而建立的。多年來,增加了對非同步請求(Servlet 3.0)和非阻塞 I/O(Servlet 3.1)的支援。在 Spring MVC 中,我們發現為現有應用程式新增選擇性的非同步 HTTP 請求處理是可行的。然而,我們也發現,在現有的 Web 框架和應用程式生態系統中引入非阻塞 I/O 非常困難。這樣做需要對核心契約進行非常深入的更改,這些契約需要從阻塞式語義切換到非同步式語義。
Spring MVC 持續受歡迎的原因之一是其直觀的、基於註解的程式設計模型,它基於靈活的控制器方法簽名。幸運的是,這同樣可以繼續作為響應式 Web 應用程式的基礎。這就是 Spring Reactive 專案的方向,您會發現一個 TestController,它看起來像任何 Spring MVC 控制器,但在一個具有與 Tomcat、Jetty、Undertow 和 Netty 整合測試的新響應式引擎上執行。請注意,該專案將在 5 月份的 4.3 版本釋出後不久合併到 Spring Framework 主分支,為 6 月份的 5.0 M1 版本做準備。
這項工作的一個關鍵要素是 Reactive Streams 規範,其目的是提供一個“用於具有非阻塞反壓的非同步流處理的標準”。該規範實現了異構非同步元件提供商之間的互操作性:從 HTTP 伺服器到 Web 框架、資料庫驅動程式等。它將被包含在 JDK 9 中,作為 java.util.concurrent.Flow。
該規範很小,由 4 個介面、一些規則和 TCK 組成。然而,要將其作為 API 公開,需要圍繞它來組合非同步邏輯的基礎設施。Spring Reactive 使用 Reactor Core,這是一個小型且專注的庫,作為想要構建在 Reactive Streams 上的庫和框架的基礎。對於那些可能熟悉 Project Reactor 的人來說,在過去 6-8 個月裡發生了許多事情,終於迎來了本週的 Reactor Core 2.5 M1 版本,Stephane Maldini 將很快對此進行全面更新。
請繼續關注來自不同 Spring 專案的關於響應式程式設計的更多部落格文章。此外,請期待今年在美麗的巴塞羅那舉行的 Spring I/O 大會上的響應式相關內容!