天天看點

spring5的新特性與JDK相關的更新

spring5.0 在 2017 年 9 月釋出了它的 GA(通用)版本。該版本是基于 jdk8 編寫的,是以 jdk8 以下版本 将無法使用。同時,可以相容 jdk9 版本。 tomcat 版本要求 8.5 及以上。

注: 我們使用 jdk8 建構工程,可以降版編譯。但是不能使用 jdk8 以下版本建構工程。 由于 jdk 和 tomcat 版本的更新,我們的 IDE 也需要同時更新。(目前使用的 eclipse 4.7.2)

更新的内容:

1.基于JDK代碼的反射增強:

spring5的新特性與JDK相關的更新
spring5的新特性與JDK相關的更新

測試後運作實作如下:

spring5的新特性與JDK相關的更新
spring5的新特性與JDK相關的更新

2.核心器的更新:

       Spring Framework 5.0 現在支援候選元件索引作為類路徑掃描的替代方案。該功能已經在類路徑掃描器中 添加,以簡化添加候選元件辨別的步驟。

       應用程式建構任務可以定義目前項目自己的 META-INF/spring.components 檔案。

       在編譯時,源模型是 自包含的,JPA 實體和 Spring 元件是已被标記的。 從索引讀取實體而不是掃描類路徑對于小于 200 個類的小型項目是沒有明顯差異。但對大型項目影響較大。 加載元件索引開銷更低。

       是以,随着類數的增加,索引讀取的啟動時間将保持不變。 加載元件索引的耗費是廉價的。是以當類的數量不斷增長,加上建構索引的啟動時間仍然可以維持一個常數, 不過對于元件掃描而言,啟動時間則會有明顯的增長。

       這個對于我們處于大型 Spring 項目的開發者所意味着的,是應用程式的啟動時間将被大大縮減。雖然 20 或者 30 秒鐘看似沒什麼,但如果每天要這樣登上好幾百次,加起來就夠你受的了。使用了元件索引的話,就能幫 助你每天過的更加高效。

       你可以在 Spring 的 Jira 上了解更多關于元件索引的相關資訊。

3.響應式程式設計風格:

       此次 Spring 發行版本的一個激動人心的特性就是新的響應式堆棧 WEB 架構。這個堆棧完全的響應式且非 阻塞,适合于事件循環風格的處理,可以進行少量線程的擴充。

        Reactive Streams 是來自于 Netflix, Pivotal, Typesafe, Red Hat, Oracle, Twitter 以及 Spray.io 的工程師特地開發的一個 API。

       它為響應式程式設計實作的實作提供一個公共的 API,好實作 Hibernate 的 JPA。這裡 JPA 就是這個 API, 而 Hibernate 就是實作。 Reactive Streams API 是 Java 9 的官方版本的一部分。

       在 Java 8 中, 你會需要專門引入依賴來使 用 Reactive Streams API。 Spring Framework 5.0 對于流式處理的支援依賴于 Project Reactor 來建構, 其專門實作了 Reactive Streams API。

       Spring Framework 5.0 擁有一個新的 spring-webflux 子產品,支援響應式 HTTP 和 WebSocket 客 戶端。Spring Framework 5.0 還提供了對于運作于伺服器之上,包含了 REST, HTML, 以及 WebSocket 風 格互動的響應式網頁應用程式的支援。

       在 spring-webflux 中包含了兩種獨立的服務端程式設計模型: 基于注解:使用到了@Controller 以及 Spring MVC 的其它一些注解; 使用 Java 8 lambda 表達式的函數式風格的路由和處理。 有了 Spring Webflux, 你現在可以建立出 WebClient, 它是響應式且非阻塞的,可以作為 RestTemplate 的一個替代方案。

4.完全支援Junit5版本:

       完全支援 JUnit 5 Jupiter,是以可以使用 JUnit 5 來編寫測試以及擴充。此外還提供了一個程式設計以及 擴充模型,Jupiter 子項目提供了一個測試引擎來在 Spring 上運作基于 Jupiter 的測試。

       另外,Spring Framework 5 還提供了在 Spring TestContext Framework 中進行并行測試的擴充。 針對響應式程式設計模型, spring-test 現在還引入了支援 Spring WebFlux 的 WebTestClient 內建測 試的支援,類似于 MockMvc,并不需要一個運作着的服務端。使用一個模拟的請求或者響應, WebTestClient 就可以直接綁定到 WebFlux 服務端設施。

       你可以在這裡找到這個激動人心的 TestContext 架構所帶來的增強功能的完整清單。 當然, Spring Framework 5.0 仍然支援我們的老朋友 JUnit! 在我寫這篇文章的時候, JUnit 5 還 隻是發展到了 GA 版本。對于 JUnit4, Spring Framework 在未來還是要支援一段時間的。

5.依賴類庫的更新:

終止支援的類庫 :

Portlet.

Velocity.

JasperReports.

XMLBeans.

JDO.

Guava.

支援的類庫 :

Jackson 2.6+

EhCache 2.10+ / 3.0 GA

Hibernate 5.0+

JDBC 4.0+

XmlUnit 2.x+

OkHttp 3.x+

Netty 4.1+

繼續閱讀