Spring Framework 5.0耗時兩年,終於在9月28日通過Spring 官方博客 撰文宣告發布第一個GA版本。期間經歷1年多的裏程碑版本和數個RC版本,現在 5.0.0.RELEASE已正式發布到了repo.spring.io和Maven中央倉庫,開發者可以通過Maven或Gradle快速獲取和體驗:
Maven:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.0.RELEASE</version> </dependency> </dependencies>
Gradle:
dependencies { compile 'org.springframework:spring-context:5.0.0.RELEASE' }
快速了解5.0
- Spring Framework 5.0新特性
- 遷移到Spring Framework 5.0
- Spring Framework 5 官方FAQ
- 最新的參考文檔
- Pieter關於Spring Framework 5.0中反應式編程的全面介紹 文章
新特性簡介
-
要求JDK 8+和Java EE 7+
整個框架的代碼庫基於Java 8源碼級別,通過泛型推斷和lambda等提升了可讀性。全面兼容JDK9,同時支持類路徑classpath和模塊路徑module path;整個框架在JDK 9上編譯和執行測試用例,默認依然使用JDK 8。支持JavaEE 7 API,包括Servlet 3.1、Bean Validation 1.1、JPA 2.1和JMS 2.0,以及最新的容器和服務器Tomcat 8.5+、 Jetty 9.4+、 WildFly 10+等。在運行時兼容Java EE 8 API,包括Servlet 4.0、 Bean Validation 2.0、 JPA 2.2和JSON Binding API 1.0,並在Tomcat 9.0、 Hibernate Validator 6.0和Apache Johnzon 1.1測試通過。 -
移除了的包、類和方法
移除了包beans.factory.access、jdbc.support.nativejdbc、spring-aspects模塊中的mock.staticmock、web.view.tiles2以及orm.hibernate3/hibernate4。不再支持Portlet、Velocity、JasperReports、XMLBeans、JDO和 Guava。 -
常規核心修訂
包括針對JDK 8+的增強和對JDK 9的兼容,包級別的非空API聲明。5.0現在有了自己的Commons Logging橋接,會自動探測 Log4j 2.x、SLF4J及JUL (java.util.logging),不再需要外部的橋接程序。spring-core自帶ASM6.0(同時還包括CGLIB 3.2.5和Objenesis 2.6)。 -
核心容器
支持 @Nullable註解作為可選註入點聲明;函數式GenericApplicationContext/AnnotationConfigApplicationContext;接口方法上的事務、緩存和異步註解一致性探測。 -
Spring Web MVC
通過Spring自帶的Filter實現全面支持Servlet 3.1;controller方法中支持Servlet 4.0的PushBuilder參數;針對Servlet 3.0 multipart解析時增加 MaxUploadSizeExceededException類型異常;不可變對象的數據綁定支持(Kotlin / Lombok / @ConstructorProperties);支持JSON綁定API(Jackson 和GSON的替代方案),支持Jackson 2.9和Protubuf 3;支持Reactor 3.1;Flux、Mono以及RxJava 3.1和2.1都可以作為controller方法的返回值,以便適應新的反應式WebClient或者Spring Data Reactive repositories;新的ParsingPathMatcher替代AntPathMatcher,解析效率更高;@ExceptionHandler方法支持 RedirectAttributes參數。 -
Spring WebFlux
這是一個全新的模塊,作為spring-webmvc的替代方案,基於反應式基礎構建——全面異步和非阻塞,它的目的是將其用於事件循環執行模型中,用來替代傳統的每個請求對應一個線程的大規模線程池模型;spring-core和spring-web中的反應式支持,比如各種編解碼器等;@Controller風格的基於註解的編程模塊,與Spring MVC類似,只不過在WebFlux中運行,支持反應式技術棧;新的函數式編程模型(“WebFlux.fn”)也可以替代@Controller,在路由API方面更加輕量和透明,運行在同樣的反應式棧和WebFlux基礎設施上;新的WebClient,用於函數式和反應式的HTTP API調用。 -
Kotlin支持
在使用Kotlin 1.1.50以上版本時,支持Null安全的API;使用Kotlin DSL的函數式bean定義。 -
測試提升
完整支持JUnit 5的Jupitre編程和Spring TestContext Framework的擴展模型;支持並行測試執行;新的before和after測試執行回調,包括TestNG,JUnit 5和使用SpringRunner的JUnit 4(但不支持JUnit 4 規則);MockHttpServletRequest現在增加了 getContentAsByteArray()和getContentAsString()方法來訪問內容;Spring MVC Test中的print()和log()方法能夠打印Mock請求中的消息體,redirectedUrl()和forwardedUrl()方法能夠通過變量擴展支持URI模板;對XMLUnit的支持升級到了2.3版本。
參考鏈接
官方博客: https://spring.io/blog/2017/09/28/spring-framework-5-0-goes-ga
項目主頁: http://projects.spring.io/spring-framework/
源碼獲取: https://github.com/spring-projects/spring-framework/
感謝張衛濱對本文的審校。
Tags: Spring Framework 版本 反應式 5.0 gt
文章來源: