2011-06-20 35 views
1

我目前正在開發一個正在增長的GWTP應用程序,所以我想開發它,以便我可以決定將它拆分成兩個或更多個部分。將GWT平臺應用程序拆分爲多個項目

想象一下,我正在研究一個項目P,該項目可以概念上分爲兩個項目P1和P2,來自兩個不同團隊的人員正在其中工作。然後,P1和P2將共享常見的東西,例如標準演示者類的擴展,常見演示者和視圖,配置等。我想創建一個應用程序,這個應用程序是P1,P2和一個普通項目Px的總和,這個項目也是另外兩個項目和一個GWTP項目的依賴項。

我不知道是否可以做到這一點,但我認爲主要問題是我需要三個Ginjectors,一個普通的和兩個擴展,每個項目一個。

有沒有一個應對這種情況的例子?或者我應該嘗試一種不同的方法?

+0

你的用例究竟是什麼?你想能夠自己運行這些獨立的項目嗎? –

+0

對不起,我剛剛看過評論。 我的想法是創建多個模塊M_1,...,M_n,每個模塊包含一個注射器和一些頁面。然後我想創建一個包含我的模塊子集的包裝項目。所以,如果我想從M_i中向/從應用程序中添加/刪除功能,我只需要在包裝中添加/刪除M_i(加上像更改包裝器投影儀繼承的小改動)。 最初我遇到了依賴問題和ginjectors的結構問題,但後來我設法解決了這個問題,我將盡快發佈ginjectors的結構。 – simo

回答

1

如果我理解你的評論權限,我會建議你不需要包裝器,而是一個通過GWT模塊提供功能的庫(請參閱here)。每個模塊都可以使用GWTP和DI,但沒有Ginjector。您寧願在您配置模塊依賴關係的地方提供杜松子酒模塊。在您的應用程序中創建了注射器,您只需安裝庫的杜松子酒模塊。

!!!別忘了:使用GWTP時,服務器端也有DI,功能完全相同。

客戶端示例。考慮我們有兩個讓我們說的組成部分是一些頁面的組合等P1和P2。然後創建兩個帶有模塊配置的GWT模塊,如P1.gwt.xml和P2.gwt.xml。每個這些模塊都有一個GinModule,例如

public class P1GinModule extends AbstractGinModule { 

    @Override 
    protected void configure() { 
     // bind your presenters, views, etc.. 
    } 
} 

在你的應用程序A1你,你安裝你想要的模塊,在這種情況下P1GinModule和P2GinModule創建杜松子酒配置

public class A1GinModule extends AbstractGinModule { 

    @Override 
    protected void configure() { 
     install(new P1GinModule()); 
     install(new P2GinModule()); 
    } 
} 

你ginjector那麼應該是這樣的:

@GinModules(A1GinModule.class) 
public interface AppInjector extends Ginjector { 
    // what ever you need ... 
} 

注意:在你的appliations配置中,假設A1.gwt.xml,不要忘記繼承兩個GWT模塊。

通過這種方法,您可以將所有依賴注入工作於不同的模塊,這些模塊在庫中推出並通過GWT模塊提供。

希望有幫助。