2012-01-26 16 views
0

我對Spring框架相當陌生。我有問題,我甚至不知道從哪裏開始。 我給你舉個例子,我想要做什麼。 假設我有這些軟件包Spring包交換

com.version.v1 
com.version.v1_3 
com.version.v2 
com.restofapplication... 

所有版本封裝在一個模塊略有改動的副本。是否有可能以某種方式配置spring,只需在applicationContext.xml中告訴它使用例如v1_3,然後執行其他操作(使用v1_3軟件包編譯應用)?

而且進一步的問題,但包狀態第一: 讓我們說V1是基本的版本,幷包含

SomeInterface.java 
SomeInterfaceImpl.java 
SomeDependentClass.java 

和V1_3樣子:

SomeInterfaceImpl.java 
SomeDependentClass.java 

所以回答第一個問題,將它後是否有可能避免完整的軟件包複製,並使彈簧只從請求的版本中獲取已更改的文件,並在較低版本中掃描丟失的文件?

你能回答我有沒有可能?給一些線索?點方向? 感謝您閱讀它。

好吧,讓我們來提供更多信息。 我知道我應該使用像GIT這樣的工具來做到這一點,但我的意圖是不同的。 Git用於代碼版本控制。

這就是我要求你的。

我有一個端點的webservice,這個端點是在v1包中創建的。 所以我們可以說我需要修改這個端點,所以我創建了v2包,通過複製v1並對它進行調試。 但我需要準備好兩個版本同時運行或運行,所以這不是典型的GIT用法。

我在第一個問題中問的是這樣的:是否可以在編譯過程中選擇哪個版本將被激活?現在我明白,這是Maven的任務而不是Spring,但這有可能嗎?

第二個問題。我說我修改後在基礎V1上創建了V2。但讓我們說只有一個文件被修改。那麼有沒有辦法只複製一個文件到V2並告訴Spring/Maven從V1收集丟失的文件?

+0

有人給你的印象是這是Spring的用途嗎?似乎是一個奇怪的要求。 – skaffman

回答

0

這不是春季的工作。您應該使用一個SCM系統,如CVS,SVN,Git或其他。下面是完整的列表http://en.wikipedia.org/wiki/List_of_revision_control_software

如果你必須在你的項目的不同版本的話,我建議一個智能構建系統(爲前。建立與AntMaven),但這將是更加昂貴的解決方案。

0

您可能可以爲每個可能的用例創建上下文,並根據您的需要在根上下文中導入它們,但是您需要交付所有包。這樣

<import resource="services.xml"/> 
<import resource="resources/messageSource.xml"/> 
<import resource="/resources/themeSource.xml"/> 

<bean id="bean1" class="..."/> 
<bean id="bean2" class="..."/> 

但爲了區分交貨,你必須做出三個不同的版本,並使用(或不使用)任何配置工具像上面提到。

0

你可能應該使用SCM來做這件事,但如果你必須的話。

您可以通過代碼設置Spring 3.1的上下文組件掃描。您將按照上述規則實施過濾器。

見ComponentScan http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/context/annotation/ComponentScan.html

的Java文檔。如果你不能得到ComponentScan工作,你也想看看AnnotationConfigWebApplicationContext,擴展它,並調用到寄存器,並從你的構造進行掃描。像這樣:

public class CustomContext extends AnnotationConfigWebApplicationContext { 
    public CustomContext() { 
     super(); 
     this.scan("com.version.v2"); 
     this.register(com.version.v1.SomeInterface.class); 
    } 
}