2011-03-29 63 views
0

我正在研究一個擁有10年曆史的Java Web應用程序,並且我想向該項目中引入一些新技術。我想開始做的一件事是依賴注入。我知道Spring框架有能力進行依賴注入,但我很難將框架集成到舊項目中。Spring Framework - 與舊的Java Web應用程序集成

有人可以提供一個例子,我將不得不在我的web.xml中更改什麼,其他文件,我將不得不補充,我需要做的其他文件?我想要最小的Spring腳本,同時仍然需要執行依賴注入。

有很多的例子在線約使用Spring開始一個新的項目,但我無法找到任何有關整合春天到舊項目。

謝謝。

回答

3

您必須首先在web.xml中添加一個上下文加載器監聽器,以及Spring配置XML文件的位置。

您應該配置Spring DispatcherServlet以接受您希望它處理的所有URL。

您應該編寫控制器來綁定和驗證HTTP請求,調用服務,將數據添加到ModelAndView進行渲染,並根據需要將JSP映射到成功/失敗視圖。

您應該將接口放在服務和持久層的前面。將實現移到Spring可以注入的實現類中。

利用Spring AOP進行安全性和事務處理,並根據需要進行日誌記錄。

+0

這有幫助,謝謝。我讓Spring在我的服務器啓動時運行,並初始化我在applicationContext.xml中定義的類。我認爲Spring雖然可能對於依賴注入來說太重了。但是,如果沒有將該類作爲Spring bean包含在內,我就無法注入到類中,而這正在呈現它自己的問題。 – 2011-03-29 16:16:19

+0

對,Spring除非受其控制,否則不能注入它。不應該是一個大問題。 – duffymo 2011-03-29 17:10:50

1

在項目中投入新技術不會使其更快\除非您將新技術引入到項目的所有部分,否則更好。 DI背後的想法是丟失對象之間的依賴關係。這個項目可能緊密結合,所以你必須重寫至少部分內容。根據規模大小,這可能會成爲一個可怕的怪物 - 問問自己這是否值得,如果除了引進新技術,它對項目有什麼積極影響。

爲什麼幾乎沒有關於將DI容器集成到舊項目中的教程很簡單:通常沒有任何意義。要麼你在所有地方使用這種模式,要麼根本沒有。通過混合兩種方式創造的混蛋孩子將是一個可怕的維護。我真的建議你想想爲什麼你想介紹一個DI容器進入那個10年的項目。除非有一個真正的理由去做(而且你很高興重寫很多代碼),否則不要這樣做。

+0

我不同意這一點:這不是關於讓應用程序更快;這是關於如何以這樣的方式來構建它,以便將來可以變得更好。根據我的經驗,Spring特別擅長應用部分應用程序,而不需要全部或全部重寫。 – duffymo 2011-03-29 00:36:42

+0

我真的不明白這一點。基本上,你將有兩個並排運行的應用程序,它們恰好共享一些代碼/數據。現在設想一個開發人員只在項目的DI方面工作,現在需要解決另一方面的問題,並假定它也是DI。如果您認爲DI的使用會使應用程序的結構更好,請花時間對其進行重構。邏輯不會改變,所以它應該能夠快速完成。 – Femaref 2011-03-29 00:47:30

+0

這是一箇舊的網絡應用程序。它可能分層不好;它可能很難測試和擴展。做這件事有很多原因。當然,當重構的應用程序完整且經過驗證與舊版應用程序相匹配時,您會退出較舊的應用程序。 – duffymo 2011-03-29 09:23:35

相關問題