取得領先
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 會議上的一些響應式熱議!