Spring 5.0是在2013年發佈Spring 4後的第一個大版本,5.0 M1在2016年7月28日發佈。隨着慢慢的推廣,使用它的人數確定也會愈來愈多,那麼Spring 5有哪些新的特性呢?一塊兒來看下吧html
基本能夠歸爲以下幾類:java
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
基於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
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不在支持下面的包了:
再也不支持以下庫:
若是你在當前的項目中使用到了上面提到的這些庫,那麼最好不要升級到Spring5的版本
響應式編程已經變得愈來愈流行,咱們會看到愈來愈多的技術實現響應式的方案,對響應式編程感興趣的能夠多作更多的瞭解。