Spring 5.x 新特性

Spring 5.0是在2013年發佈Spring 4後的第一個大版本,5.0 M1在2016年7月28日發佈。隨着慢慢的推廣,使用它的人數確定也會愈來愈多,那麼Spring 5有哪些新的特性呢?一塊兒來看下吧html

基本能夠歸爲以下幾類:java

  • JDK版本升級
  • Core框架修訂,核心容器更新
  • Kotlin函數式編程
  • 響應式編程模型
  • 測試改進
  • 額外庫支持
  • 中止維護一些特性
JDK版本升級

Spring 5的代碼基於Java 8的語法規範,所以要想使用Spring 5,JDK的版本至少要在8.0以上。最開始的時候Spring 5.0想使用Java 9,可是Java 9發佈的時間比Spring 慢了18個月,而後Spring開發團隊決定從Spring 5.0中去除Java 9的依賴。react

Core框架修訂

基於Java8的反射加強,方法的參數再Spring5中能夠高效的被訪問git

核心的Spring接口提供了利用了Java 8的默認接口實現,default方法,提供了一些可選的聲明github

@Nullable和@NotNull註解精確的標記了方法的參數和返回值,這樣能夠在編譯的時候處理null值,而不至於在運行的時候拋出空指針異常,NullPointerExceptions。web

在日誌端,Spring 5.0提供了Common Logging的橋接模塊,spring-jcl,代替了標準的Common Logging,同時它還能夠自動的檢測Log4J2.x,SLF4J,JUL(java.util.logging),而不須要額外的依賴。spring

Kotlin函數式編程

Spring 5.0引入了JetBrains的Kotlin語言支持,Kotlin是一種支持函數式編程的面向對象編程語言。Kotlin也運行在JVM之上,有了Kotlin的支持,開發者可使用Spring的函數式編程處理Web的入口點和Bean的註冊。編程

好比你能夠寫成以下的代碼風格。api

在web的入口點的時候:bash

{
("/movie" and accept(TEXT_HTML)).nest {
GET("/", movieHandler::findAllView)
GET("/{card}", movieHandler::findOneView)
}
("/api/movie" and accept(APPLICATION_JSON)).nest {
GET("/", movieApiHandler::findAll)
GET("/{id}", movieApiHandler::findOne)
}
}
複製代碼

在註冊Bean的時候:

val context = GenericApplicationContext {
registerBean()
registerBean { Cinema(it.getBean()) }
}
複製代碼
響應式編程模型

激動人心的Spring 5.0特性就是它的響應式Web編程

Reactive Streams(響應式流)是NetFlix ,Pivotal, Typesafe, Red Hat, Oracle, Twitter, 和 Spray.io共同開發的一套規範。它提供了一些通用的API, 實現的話能夠本身控制,就像Hibernate之JPA,JPA是api,Hibernate是實現。

響應式流是Java9的正式模塊,可是在Java8中,咱們須要引入額外的依賴。Spring5.0的流式支持基於響應式流的API的Project Reactor

Spring 5.0有個新的模塊叫作spring-webflux,能夠支持響應式的Http和WebSocket客戶端。

經過Spring Webflux,你能夠建立Webclient,它是響應式和非阻塞的RestTemplate的替代。以下是代碼示範:

WebClient webClient = WebClient.create();
Mono person = webClient.get()
.uri("http://localhost:8080/movie/42")
.accept(MediaType.APPLICATION_JSON)
.exchange()
.then(response -> response.bodyToMono(Movie.class));
複製代碼
測試改進

Spring 5.0徹底支持Junit 5,在TestContext框架中,能夠並行的執行測試。對於響應式的編程,Spring-test提供了WebTestClient來測試spring-webflux。WebTestClient,就像MockMvc不須要運行的服務器。

固然Spring 5.0仍是支持Junit 4的,在將來的一段時間裏Junit 4是都會存在的。

額外庫支持

Spring 5.0如今支持下面的庫版本:

中止維護的一些特性

在Api層面上,Spring5.0不在支持下面的包了:

  • beans.factory.access
  • jdbc.support.nativejdbc
  • spring-aspects模塊的mock.staticmock
  • web.view.tiles2M. 如今Tiles 3是最低要求的版本
  • orm.hibernate3和orm.hibernate4.如今支持Hibernate5

再也不支持以下庫:

  • Portlet
  • Velocity
  • JasperReports
  • XMLBeans
  • JDO
  • Guava

若是你在當前的項目中使用到了上面提到的這些庫,那麼最好不要升級到Spring5的版本

小結

響應式編程已經變得愈來愈流行,咱們會看到愈來愈多的技術實現響應式的方案,對響應式編程感興趣的能夠多作更多的瞭解。

參考

相關文章
相關標籤/搜索