我有一堆屬於同一團隊的頂級包。所有頂層包裝均使用彈簧。然後有一些庫(jar)是頂層包之間共享的功能和實用程序。所有漂亮的標準東西。處理彈簧依賴關係
在某些情況下是有意義的利用彈簧的一個庫包。假設我有一系列共享的方面,我想使用spring的@Aspect/@ Before/@ After等註釋。
問題是有相當大的頂級包使用spring 2.5.6依賴關係編寫,而較新的頂級包是在spring 3中創建的。我通常認爲這是件好事。
但再有就是這個小問題,我現在有一個依靠彈簧2.5.6庫,而那些不能因爲誤匹配版本的彈簧3頂層封裝中使用(我在做這裏假設吮吸兩種不同的彈簧版本是一個非常糟糕的想法)。看起來我的選擇是避免庫中的彈簧依賴,或者接受我的庫需要提供多個版本(每個版本的彈簧在頂層包中使用1)。選項1似乎比選項2更可取,但我希望有一些有趣的技巧可以讓我獲得兩全其美的好處。
如果有一些這些事情Java標準(@注入?),那麼我可以依靠的東西的javax而不是在春天具體的東西。不幸的是,@Inject等只支持Spring3 +,以便在未來的某個時間修復我的問題,但只要我有2.5.6的應用程序,它不會幫助。
想法?
我要指出,有依賴於彈簧2.5.6現有的一些庫和我認爲,作爲一個威懾升級頂級包去春來-3。因爲升級頂層包也意味着版本會碰撞依賴於spring的N庫,這是令人討厭的,因爲我甚至都不知道這些庫的完整用戶集以及他們可能認爲春季版突然被碰撞。
編輯:
我想知道如果我可以創造一些庫,並與範圍彈簧依賴提供。春天版本是我可以選擇的最小版本,以便獲得我想要的功能集,所以理想情況下我會使用2.5.6以使其與Spring 2.5.6應用程序和Spring 3.0.5應用程序兼容。然後當一個消費應用程序在我的庫上創建一個依賴項時,它也會爲該應用程序的實際spring版本創建一個spring依賴項。我認爲這應該工作,只要春天版本是> =我爲我的圖書館選擇的版本(我碰巧知道2.5.6是所有應用程序使用的最低版本)。
我的另一種選擇是不建立在所有彈簧的依賴,但確實提供了可以在調用應用程序中導入一個spring.xml。這意味着我不能使用註釋或InitializingBean之類的東西,但通常spring已經提供了一種通過註釋或xml或兩者來執行的方法,所以這也應該可以工作。
想法?
+1:好問題 – Nilesh 2011-05-27 18:03:24