當前位置:
首頁 > 最新 > Spring Framework 5.0發布與JDK 9兼容強調反應式編程的想法

Spring Framework 5.0發布與JDK 9兼容強調反應式編程的想法

Spring框架5.0,採用了新的活性Web框架,發佈於9月28日,2017年彼得·漢弗萊在產品營銷經理樞紐,把它稱為自該項目在2004年成立以來的最顯著釋放。

在這個版本中,Spring 5.0具有基於Java 8源代

碼級別的整個代碼庫。Spring 5.0與JDK 9兼容,用於開發和部署。

Spring 5.0的反應性Web框架Spring WebFlux建立在Project Reactor 3.1上,支持帶注釋和功能的編程風格。InfoQ向Pivotal的高級工程師Rossen Stoyanchev講述了他對Spring 5.0強調反應式編程的想法。

Stoyanchev:Java開發人員熟悉從Java 8中的CompletableFuture編寫非同步邏輯的延續風格API的好處。近年來,我們也看到了用於編寫非同步邏輯的庫的興起,例如RxJava和Reactor,具有類似的優點作為CompletableFuture,但對於一系列值並支持背壓(如Reactive Streams規範所建模)。

Spring Framework 5使應用程序能夠採用這種非同步編程模型,該模型本身在其自身的核心協議中完全非同步,在內部使用非阻塞I / O,並支持在非同步運行時間之上的Reactive Streams反壓,例如Netty和Undertow還有Tomcat和Jetty等Servlet容器(基於Servlet 3.1非阻塞I / O)。這種方法的好處是可以組合非同步邏輯的第一級支持,再加上事件循環風格的執行模型,可以用更少的硬體資源處理更多的並發,特別是在高負載下。

Stoyanchev表示,由於新功能與Spring MVC並行存在,Spring 5.0中的更改不會對現有應用程序產生任何直接影響。

在大多數情況下,應用程序將導入spring-webmvc(Servlet堆棧)或spring-webflux(反應堆棧),現有應用程序可以輕鬆升級到Spring Framework 5的spring-webmvc版本。

根據Stoyanchev的說法,Spring 5.0旨在儘可能地為Spring MVC和Spring WebFlux提供選擇和一致性。這兩個Web框架都支持使用靈活的控制器方法簽名的基於相同注釋的編程模型。除此之外,Spring WebFlux還提供了另一種功能性的Web端點編程模型,可以吸引Java 8 lambda表達式和內置的Kotlin擴展。

在Spring框架5,我們實際上已經擴展Spring MVC的與無功返回值支持,允許Spring MVC的控制器,利用活性Web客戶端和如活性數據倉庫等反應庫,同時還是一個基於Servlet的Web端點內運行安排在任何Servlet 3.1+容器上。

InfoQ向Stoyanchev詢問了開發人員在採用Spring 5.0反應式編程模型時應採取的預防措施

開發人員應該知道,從編寫命令式風格邏輯到使用聲明式非同步API的轉變具有很大的學習曲線。非同步和非阻塞代碼也很難調試,因為您不再有單個調用堆棧。如果你是新手,從小處著手,並留出足夠的時間來學習和適應。仔細挑選哪些應用程序非常合適,並可能從非阻塞並發中受益最多。在決定繼續之前衡量並證明性能優勢。請記住,有一些簡單的地方可以開始,比如在現有的Spring MVC應用程序中使用反應式WebClient。

InfoQ還與Spring Framework項目負責人Juergen Hoeller談了他對Spring 5.0的看法。

Hoeller:我們的Java 8+基準在整個框架中帶來了重要的API優化和許多內部優化。同時,Spring Framework 5.0在類路徑和模塊路徑中都提供了全面的JDK 9支持。

核心容器為Java 8和Kotlin提供了功能性的bean註冊機制。

Hoeller補充說,Spring 5.0還為通用Spring API提供了Kotlin擴展,如JdbcTemplate和RestTemplate,並支持針對Kotlin數據類的數據綁定。

Hoeller總結了Spring 5.0的其他值得注意的特性

Spring Framework 5.0在運行時支持Java EE 8 API級別:例如用於PushBuilder的Servlet 4.0注入Spring MVC處理程序方法,用於JSON轉換的標準JSON綁定API(作為Jackson和Gson的替代方案),JPA 2.2持久性和Bean驗證2.0用於注釋驅動驗證。所有這一切說,我們的基線仍然在Java EE 7+級別,仍然支持任何Servlet 3.1容器,JPA 2.1提供商等。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 凌智動 的精彩文章:

超級諾基亞7 Plus手機 運行Android Oreo 諾基亞一口氣發五款新機

TAG:凌智動 |