Spring 5.0 GA版本釋出,支援JDK9及反應式程式設計

weixin_33858249發表於2017-09-29

Spring Framework 5.0耗時兩年,終於在9月28日通過Spring官方部落格撰文宣告發布第一個GA版本。期間經歷1年多的里程碑版本和數個RC版本,現在 5.0.0.RELEASE已正式釋出到了repo.spring.io和Maven中央倉庫,開發者可以通過Maven或Gradle快速獲取和體驗: 

\\

Maven:

\\
\\u0026lt;dependencies\u0026gt;\  \u0026lt;dependency\u0026gt;\    \u0026lt;groupId\u0026gt;org.springframework\u0026lt;/groupId\u0026gt;\    \u0026lt;artifactId\u0026gt;spring-context\u0026lt;/artifactId\u0026gt;\    \u0026lt;version\u0026gt;5.0.0.RELEASE\u0026lt;/version\u0026gt;\  \u0026lt;/dependency\u0026gt;\\u0026lt;/dependencies\u0026gt;\
\\

Gradle:

\\
\dependencies {\  compile 'org.springframework:spring-context:5.0.0.RELEASE'\}\
\\

快速瞭解5.0

\\

新特性簡介

\\
  • 要求JDK 8+和Java EE 7+ 
    \\t整個框架的程式碼庫基於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測試通過。\\t
  • 移除了的包、類和方法 
    \\t移除了包beans.factory.access、jdbc.support.nativejdbc、spring-aspects模組中的mock.staticmock、web.view.tiles2以及orm.hibernate3/hibernate4。不再支援Portlet、Velocity、JasperReports、XMLBeans、JDO和 Guava。\\t
  • 常規核心修訂 
    \\t包括針對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)。\\t
  • 核心容器 
    \\t支援 @Nullable註解作為可選注入點宣告;函式式GenericApplicationContext/AnnotationConfigApplicationContext;介面方法上的事務、快取和非同步註解一致性探測。\\t
  • Spring Web MVC 
    \\t通過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引數。\\t
  • Spring WebFlux 
    \\t這是一個全新的模組,作為spring-webmvc的替代方案,基於反應式基礎構建——全面非同步和非阻塞,它的目的是將其用於事件迴圈執行模型中,用來替代傳統的每個請求對應一個執行緒的大規模執行緒池模型;spring-core和spring-web中的反應式支援,比如各種編解碼器等;@Controller風格的基於註解的程式設計模組,與Spring MVC類似,只不過在WebFlux中執行,支援反應式技術棧;新的函數語言程式設計模型(“WebFlux.fn”)也可以替代@Controller,在路由API方面更加輕量和透明,執行在同樣的反應式棧和WebFlux基礎設施上;新的WebClient,用於函式式和反應式的HTTP API呼叫。\\t
  • Kotlin支援 
    \\t在使用Kotlin 1.1.50以上版本時,支援Null安全的API;使用Kotlin DSL的函式式bean定義。\\t
  • 測試提升 
    \\t完整支援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/

\\

感謝張衛濱對本文的審校。

相關文章