你應該將應用遷移到Spring 4的五個原因

jopen 9年前發布 | 31K 次閱讀 Spring 4

InfoQ中文站翻譯的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/five-reasons-to-migrate-spring4

Rafal Borowiec是一位軟件開發者、項目領導、敏捷實踐者與演講者,同時也是一名熱情的開源愛好者。近日,他談到了為何要將你的Java應用遷移到Spring 4上。

Spring框架最 初發布于2004年,距今已經過去10多年了。在過去的10年間,Spring隨著Java的變遷也得到了長足的發展,從一開始的IoC與AOP框架到現 在涵蓋各個業務領域、各種技術場景的一站式服務平臺。目前的Spring擁有眾多子項目,如Spring Batch、Spring Data、Spring Mobile、Spring Boot、Spring Security、Spring Social、Spring Shell、Spring Integration等等,基本上針對各種業務場景都提供了相應的解決方案。此外,Spring框架也在隨著Java版本的更迭而不斷演變著。雖然 IoC與AOP依然是Spring框架重要的兩個基石,但不得不說的是,現在的Spring已經遠遠超越了IoC與AOP的范疇。Spring框架也大量 應用于各種企業與互聯網項目中;但值得一提的是,由于種種因素的存在,目前依然有不少項目還在使用Spring 3。實際上,Spring 4已經發布了很長一段時間,同時也針對Java 8進行了大范圍的更新。那么,我們是否有必要將現有的應用遷移到Spring 4呢?誠然,對于既有的成熟系統來說,進行軟件的版本升級終歸不是一件容易的事情,因為這不僅涉及到Spring本身的升級,還涉及到與之相關的各種依賴 的升級,稍有不慎就會造成業務無法正常訪問的后果;但這并不是說我們就不能升級Spring了,通過完善的測試,細粒度的升級計劃,我們依然可以品嘗到 Spring 4為我們所帶來的一切便利;另外,對于新系統來說,直接使用Spring 4未嘗不是一個好的選擇。下面,我們就來看看有必要將系統升級到Spring 4的五個原因。

1.使用Java 8進行更快的開發

Java 8發布于2014年,它是Java自1.5以來變化最大的一次升級。毫無疑問,你應該考慮將所用的JDK升級到Java 8,原因如下:

  • Java 8更快
  • Java 8擁有Lambda表達式
  • Java 8擁有Streams API
  • Java 8提供了全新的Date與Time API

此外,讀者朋友不要忘記,Java 7現在已經EoF了。 Spring 4是該框架首個完全支持Java 8的版本,如果想要在Spring中使用Java 8,那毫無疑問,你應該進行升級。借助于Spring 4與Java 8,完成同樣的功能你可以使用更加緊湊、整潔的代碼來實現。比如說,Spring中很多既有的和新的接口都是函數式接口,他們可用在Lambda表達式 中。Spring Core現在已經完全支持Java 8新的Date與Time API,還可以在Thymeleaf視圖與Spring Data JPA中使用他們。此外,Spring 4還支持java.util.Optional。比如說,你可以通過@RequestParam、@RequestHeader與 @MatrixVariable進行注入。Spring 4還提供了對Stream、Charset、Currency與TimeZone開箱即用的轉換器支持。

2.提升生產力

Spring 的每一次發布都帶來了大量的改進,這些改進可以簡化我們的開發工作。越來越多需要通過自定義解決方案才能實現的任務現在都已經成為了Spring框架的一 部分。比如說,在Spring中,Java泛型類型的注入現已夢想成真。Spring會自動將泛型當作@Qualifier的一種形式。 @EventListener與泛型事件的引入簡化了Spring應用中事件的處理。Spring不僅引入了對JCache(JSR-107)的支持,還 隨著時間的推移改進了自身的緩存抽象層。如果使用了JMS,那么你會感受到這種改進,這主要是通過配置(@EnableJms)與注冊端點 (@JmsListener)來實現的。

此外,Spring測試基礎設施也發生了很大的變化,現在可以更快地創建集成測試了。Spring 4提供了新的TestTransaction API,可以實現編程式的事務管理、可以基于每個類或是每個方法來執行SQL腳本,還可以根據JUnit規則而非JUnit測試運行器來執行測試。以上這 些都是Spring 4測試基礎設施改進的冰山一角。

3.與時俱進

Spring框架能與 其他很多框架和第三方庫共存,并且還可以將其集成進來。當使用了Spring 4后,其相應的依賴也會一并得到更新,這樣就可以使用最新的庫了。Spring可以很好地集成JEE APIs,如JMS 2.1、JPA 2.1、Bean Validation 1.1以及之前提到的JCache。此外,Spring還對javax.money包中的類型提供了綁定與轉換支持。它集成了Gson(Jackson的 一個替代方案)以及Google Protocol Buffers數據協議。

值得一提的是,Spring 4還支持很多新標準,如WebSockets、SockJS、HTTP Streaming與服務端推事件。

4.不再有JAR地獄的煩惱

對 于使用了Maven或是Gradle的Spring應用來說,使用Spring IO Platform項目會對依賴的管理方式產生重要的影響。Spring IO Platform對各種Spring項目及其依賴提供了版本化管理。在構建腳本中,聲明依賴時可以不必再考慮版本號了。

由于升級依賴版本時可能會出現一些問題,這導致一些開發者不敢輕易嘗試。不過,借助于Spring IO Platform,這些擔憂都將煙消云散。很多時候,升級Platform所支持的全部依賴時,你所要做的只不過是修改一下Platform的版本而已。

5.做一個開心的程序員

很多開發者都喜歡使用最新的技術。將所用的框架升級到最新版會激發他們的生產力,他們也會因此學習到新的技術并改進自己的技能。這也是保持開發者動力,避免他們認為自己一直在從事遺留項目的絕佳方式。

實 際上,當升級到Spring 4后,開發者將會自覺不自覺地開始學習Java 8;畢竟,在使用的過程中學習是最佳的學習方式。Java 8是具有里程碑意義的一個Java版本,從這個版本開始,Java開始提供函數式編程的一些特性,Java開發者也可以使用Lambda表達式這一利器來 簡化開發;Spring 4對Java 8提供的全方位支持也會促使Java開發者對框架與語言理解的不斷深入。這反過來又會使得開發者對Spring 4所提供的新特性有更好的把握。

對于想要了解Spring 4與Java 8的各位讀者,下面給出一些資料可供大家學習參考:

同時,下面還有一些從老版本的Spring遷移到Spring 4的一些注意事項與遷移指南:

各 位InfoQ讀者朋友們,你所在的項目使用了Spring么,使用的是哪個版本?你認為當前的版本是否足以應付業務的發展,是否有必要將Spring升級 到最新版?當前使用的是哪個版本的Java,是否有升級到Java 8的計劃?值得一提的是,由于Project Jigsaw的緣故,Java 9正式版的發布將會推遲到2017年,因此在未來的近兩年時間內,Java 8依舊是最值得每一個Java開發者深入學習的版本。你是否認為Spring 4與Java 8的搭配將會提升你的開發相率,不妨將你的看法寫下來,與其他讀者一同探討。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!