2011-06-20 42 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模块提供。

希望有帮助。

相关问题