<dl id="3wz6h"></dl><li id="3wz6h"></li>

      1. <dl id="3wz6h"></dl>

      2. <dl id="3wz6h"><ins id="3wz6h"></ins></dl>

            <dl id="3wz6h"></dl>

            <dl id="3wz6h"><ins id="3wz6h"></ins></dl>
            1. 
              
              <output id="3wz6h"><ins id="3wz6h"><nobr id="3wz6h"></nobr></ins></output>

              <li id="3wz6h"><ins id="3wz6h"></ins></li>
              
              

            2. <output id="3wz6h"><ins id="3wz6h"><nobr id="3wz6h"></nobr></ins></output>
              首頁»Java WEB»Spring Framework 5.0 新特性

              Spring Framework 5.0 新特性

              來源:oschina 發布時間:2017-07-08 閱讀次數:

                Spring Framework 5.0 是自 2013年12月版本 4 發布之后 Spring Framework 的第一個主發行版。Spring Framework 項目的領導人 Juergen Hoeller 于 2016 年 7 月 28 日宣布了第一個 Spring Framework 5.0 里程碑版本(5.0 M1)。

                現在,將近一年的時間過去以后,我們期盼已久的 RC3 版本將于 2017 年 7 月 18 日發行。這是路線圖規劃中 Spring Framework 5.0 首個 GA 發行版的最后一次發行。

                從高層來看,Spring Framework 5.0 的功能可以分為:

              • JDK 基線更新

              • 核心框架修正

              • 核心容器更新

              • 含 Kotlin 在內的函數式編程

              • 響應式編程模型

              • 測試改進

              • 庫支持

              • 中止支持

               Spring Framework 5.0 的 JDK 基線更新

                整個 Spring framework 5.0 代碼庫運行于 Java 8 之上。因此 Spring Framework 5.0 對環境的最低要就就是 Java 8。

                這一點實際上對框架而言非常重要。而作為開發者的我們而言,則已經能夠去藉此來享受到現代 Java 發行版中的所有新特性了。而框架版本還背負這支持已經不被建議使用的 Java 發行版的任務。

                現在,框架的最低要求是 Java 8.

                Spring Framework 5.0 原來是計劃在 Java 9 之上發行的。然后,在基于 Java 9 的發行版運作了超過 18 個月之后, Spring 團隊決定將 Spring Framework 5.0 發行版同 Java 9 的綁定關系解除。

                不過,在 Java 9 發布的時候(計劃是2017年9月份), Spring Framework 5.0 會準備好的。

               核心框架修訂

                核心的 Spring Framework 5.0 已經利用 Java 8 所引入的新特性進行了修訂。比較關鍵的一些如下:

              • 基于 Java 8 的反射增強,  Spring Framework 5.0 中的方法參數可以更加高效的進行訪問。

              • 核心的 Spring 接口現在提供基于Java 8 的默認方法構建的選擇性聲明。

              • 用 @Nullable 和 @NotNull 注解來顯示表明可為空的參數和以及返回值。這樣就夠在編譯的時候處理空值而不是在運行時拋出 NullPointerExceptions。

                在日志記錄方面, Spring Framework 5.0 帶來了 Commons Logging 橋接模塊的封裝, 它被叫做 spring-jcl 而不是標準的 Commons Logging。當然,無需任何額外的橋接,新版本也會對 Log4j 2.x, SLF4J, JUL ( java.util.logging) 進行自動檢測。

                有了 Resourse 抽象所提供的 isFile 指示器以及 getFile 方法,防御式編程方法也得到了框架的推動。

               核心容器更新

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

                應用程序構建任務可以定義當前項目自己的 META-INF/spring.components 文件。在編譯時,源模型是自包含的,JPA 實體和 Spring 組件是已被標記的。

                從索引讀取實體而不是掃描類路徑對于小于 200 個類的小型項目是沒有明顯差異。但對大型項目影響較大。加載組件索引開銷更低。因此,隨著類數的增加,索引讀取的啟動時間將保持不變。

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

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

                你可以在 Spring 的 Jira上了解更多關于組件索引的相關信息。

                @Nullable 注解現在也可以被用來作為可選注入項的指示器。@Nullable 為對象使用方規定了一項義務,就是它們必須準備以為取值為 null 的值。在此次發布之前,實現這件事情的唯一方法就是通過 Android 的 NullableChecker Framework 的 Nullable, 以及 JSR 305 的 Nullable

                發行說明中的其他一些新功能和增強功能包括:

              • 在 GenericApplicationContext 和 AnnotationConfigApplicationContext 中實現函數式編程風格。

              • 對接口方法的事務、緩存和異步注釋的一致性檢測。

              • 將 XML 配置命名空間簡化為無版本化的模式。

               使用 Kotlin 進行函數式編程

                Spring Framework 5.0 引入了對 JetBrains Kotlin 語言的支持。Kotlin 是一種支持函數式編程編程風格的面向對象語言。Kotlin 運行在 JVM 之上,但運行環境并不限于 JVM。

                有了對 Kotlin 的支持,開發者可以進行深度的函數式 Spring 編程,特別是在函數式 Web 端點以及 Bean 注冊這些方面。

                在 Spring Framework 5.0 中, 你可以為 WEB 的函數式 API 編寫干凈且地道的 Kotlin 代碼,就像下面這樣:

              {
              ("/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 的注冊,作為 XML 或者 @Configuration 以及 @Bean 的替代辦法, 現在你可以使用 Kotlin 來注冊 Spring Bean了,就像下面這樣:

              val context = GenericApplicationContext {
              registerBean()
              registerBean { Cinema(it.getBean()) }
              }

                點擊這里了解我的新的 Spring Framework 5 課程的相關信息!

               響應式編程模型

                此次 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 的一個替代方案。

                這里有一個使用 Spring 5.0 的 REST 端點的 WebClient 實現:

              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));

                盡管新的 WebFlux 模塊給我么帶來了激動人心的新能力,傳統的 Spring MVC 在  Spring Framework 5.0 仍然得到了完整的支持。

               測試方面的提升

                Spring Framework 5.0 完全支持 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 在未來還是要支持一段時間的。 

               庫支持

                Spring Framework 5.0目前支持以下升級庫的版本 :

               中止的支持

                在 API 層面,Spring Framework 5.0 不再支持以下包:

              • beans.factory.access 

              • jdbc.support.nativejdbc 

              • spring-aspects 模塊的 mock.staticmock

              • web.view.tiles2M.(最低要求 Tiles 3)

              • orm.hibernate3 和 orm.hibernate4. 目前 Hibernate 5 是支持的框架。

                Spring Framework 5.0 同時也停止了對以下庫的支持:

              • Portlet.

              • Velocity.

              • JasperReports.

              • XMLBeans.

              • JDO.

              • Guava.

                如果你正在使用任何上面的包,建議你將 Spring Framework 版本維持在 4.3.x。

               結語

                Spring Framework 5.0 的亮點絕對是響應式編程,這是一個重要的范式轉變。你可以將 Spring Framework 5.0 作為響應式程序的基礎版本。對于 2017 年及以后的剩余時間里,你可以期待看到子項目實現響應式特性。你將看到即將發布的 Spring Data、Spring Security、Spring Integration 等版本所提供的響應式編程功能。

                Spring Data 團隊已經為 MongoDB 和 Redis 實現了響應式支持。

                使用 JDBC 獲取響應式支持還為時過早。JDBC 規范本身就是阻塞的,在傳統的 JDBC 數據庫中看到響應式編程的還需要一段時間。

                雖然響應式編程是 Spring Framework 5.0 中的閃光點,但它不會在任何地方得到支持。 下游技術需要提供響應式支持。

                隨著響應式編程越來越受歡迎,我們可以期待越來越多的技術將實現響應式解決方案。 當然,我們可以期待 Spring 框架隨著其他的響應式編程方案的使用而發展。

                原文地址:https://dzone.com/articles/whats-new-in-spring-framework-5

              QQ群:WEB開發者官方群(515171538),驗證消息:10000
              微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
              提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
              網友評論(共1條評論) 正在載入評論......
              理智評論文明上網,拒絕惡意謾罵 發表評論 / 共1條評論
              登錄會員中心
              云南十一选往期