簡體   English   中英

將大型應用程序從spring 3.0.x升級到4.1.x - 我應該遵循哪些最佳實踐/程序?

[英]Upgrading large application from spring 3.0.x to 4.1.x - What best practices / procedures should I follow?

我已經使用Spring大約一年了,而且我已經足夠舒服地使用它了,但我在大多數情況下都避免跳過引擎蓋。

我的任務是升級從Spring 3.0.x到Spring 4.1.x的大型關鍵任務企業應用程序。

制作像這樣的大型,不可避免的挑剔和復雜變化的最佳實踐是什么? (任何超出'扔進jar文件,看看會發生什么''閱讀文檔: http//spring.io/ '會非常有幫助)

系統:

  • Java 6 - jax-b / -p / -ws /,Apache Commons,

  • Spring 3.0.5 - 通常(核心,上下文,bean等),MVC,AOP,ORM,JDBC,Acegi

  • Hibernate 3.5

  • 雄貓6

  • 0單元測試或任何類型的自動測試。

  • Maven依賴管理和構建自動化。

  • 半控制器使用注釋進行請求響應映射,一半使用simpleFormController模式,一半使用自動裝配,一半使用xml連接。

  • 數百個觀點,數十個控制器。

到目前為止我采取的步驟:

  • 准備一個(主要是自動化的)回歸測試腳本(以便我可以確保我沒有破壞任何東西)

  • 我已經開始一次閱讀“升級指南”,“升級到3.1”,“升級到3.2”,並對聽起來很熟悉的事情做筆記,但我想我需要更深入地了解在我對此作為一種詳盡的方法充滿信心之前,我們的系統,以及一般的春天。 這通常感覺像是一種隨意的方法,這不是我想要的這種復雜的變化。

我的問題:

  • 對於像這樣的工作,哪些步驟/程序被認為是“最佳實踐”?

  • 對你這樣的工作來說,有什么東西可以作為'陷阱'嗎?

顯然,不會有“標准”的推薦做法,因為每次遷移/升級都是不同的。 這是我的想法:

  1. 要求,要求,要求

    回歸測試腳本是一個很好的開始。 如果有完整的功能/功能文檔,那么遷移的“成功標准”很簡單。

    如果文檔不完整/不存在,則進行雙重和三重檢查以確保通過測試捕獲所有“要求”。 創建文檔也可能是一個好主意。 並讓產品經理/主管簽字。 即使在簡單的系統中,您也會驚訝地發現有多少“隱藏”的要求。 如果沒有全面的要求,就有可能低估遷移所需的工作量。

    根據時間表設定正確的期望至關重要。 也許一個敏捷的方法,每周兩次演示你已經取得了多少進步將有助於讓每個人都在同一頁上。

  2. Spring項目已經發展了很多。 學習時間預算。

    這可能是一個很大的問題。 自Spring 3.x以來,Spring項目和Java開發已經發展了很多。 重大變化包括:

    • Java 8的功能
    • JavaConfig(與xml配置相對)
    • Acegi現在是Spring Security
    • Spring項目通常使用Spring Boot
    • 從Maven切換到Gradle用於構建項目
    • 使用Jenkins(或其他CI工具)的完整CI
    • 單元和集成測試已經轉向使用注釋(和模擬框架)

嗯,要回答你的問題並不容易,因為有很多事情需要考慮。

首先,我建議您使用直接來自“源”的早期版本的Spring Framework指南中的遷移

我特別提請您注意“強制最小依賴性版本”部分,該部分建議您使用某些廣泛使用的庫的最低版本級別。 顯然,在你插入這些新版本的那一刻,他們帶來了一些可能產生沖突的傳遞依賴。 另請參閱依賴關系更新部分。

還要記住正確定義pom文件中依賴項的范圍,因為它們中的許多都可能由您正在使用的基礎結構(即Tomcat)提供。

我認為您將需要遷移到Java 7或8,並且Tomcat也應該更新到版本7或更高版本8。

此外,嘗試使用maven自動化您的構建和測試環境,同時采用像Jenkins這樣的CI環境(如果您更喜歡該產品,則采用Hudson)。

對每個小方法/代碼進行單元測試也非常重要,因為它將使集成測試更容易。

您還應熟悉Spring 4.x的新功能,並嘗試利用它們,尤其是那些有關測試改進的功能。 新功能的一點簡歷如下:

  • 刪除了不推薦使用的包和方法
  • Java 8支持
  • Java EE 6和7成為基准
  • Groovy Bean定義DSL
  • 核心容器改進
  • 一般網站改進
  • WebSocket,SockJS和STOMP消息傳遞
  • 通過極大地使用注釋來測試改進

另請參閱Petri Kainulainen的Spring MVC測試教程 ,它可以為您提供有關測試的大量信息。

在繼續之前,您必須回答以下問題。

是否需要升級只是某些依賴項的庫和運行時?

要么

你真的想要充分利用Spring 4.x嗎?

一旦你做出決定,你就可以采取適當的方法。 您創建的那些回歸腳本將有助於這兩種方案。 如果你能想到一些粗略的一次性實用程序,它將以一些有效的輸入擊中每個公共api並捕獲輸出並且能夠在這兩個世界中進行比較,這可能有所幫助,但它可能不適用於你的情況。

因此,如果你想獲得Spring 4.x的好處,我會建議你專注於生產力方面並創建這些東西的清單。

您可以在Spring 4中重新設計整個應用程序,就像它是一個新的應用程序一樣。

一旦你能想象未來的狀態。 下一個問題減少到從A點到B點,即最佳遷移路徑。

從Spring 3遷移到Spring 4,您可能會從Spring項目的Github上的Spring Integration 3.0到4.0遷移指南中獲得一些幫助。

希望它有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM