在多个项目上拆分GWT平台应用程序



我目前正在开发一个正在增长的GWTP应用程序,所以我想开发它,以便将来可以决定将其拆分为两个或多个部分。

考虑一下,我正在处理一个项目p,该项目在概念上可以分为两个项目P1和P2,来自两个不同团队的人员正在处理这两个项目。然后,P1和P2将共享共同的东西,例如标准演示者类的扩展、共同的演示者和视图、配置等等。我想创建一个应用程序,它是P1、P2和一个共同项目Px的总和,它将是其他两个项目和GWTP项目的依赖项。

我不知道是否可以做到这一点,但我认为主要的问题是我需要三个Gijector,一个通用的Gijector和两个扩展,每个项目一个。

有这样的例子吗?或者我应该尝试不同的方法?

如果我理解您的评论,我建议您不需要包装器,而需要通过GWT模块提供功能的库(请参阅此处)。每个模块都可以使用GWTP和DI,但没有Gijector。您更愿意在配置模块依赖关系的地方提供gin模块。在创建ginjector的应用程序中,只需安装库的gin模块即可。

别忘了:当使用GWTP时,服务器端也有DI,其功能完全相同。

客户端示例。假设我们有两个组件,比如说,它们是一些页面等的组合。P1和P2。然后用P1.GWT.xml和P2.GWT.xml等模块配置创建两个GWT模块

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());
    }
}

你的目标应该是这样的:

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

注意:在应用程序配置中,比如说A1.gwt.xml,不要忘记继承这两个gwt模块。

有了这种方法,所有的依赖项注入都可以用于不同的模块,这些模块在库中推出并通过GWT模块提供。

希望能有所帮助。

最新更新