1

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

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

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

有没有一个例子可以应对这种情况?还是我应该尝试不同的方法?

4

1 回答 1

1

如果我正确理解您的评论,我建议您不需要包装器,而是需要一个通过 GWT 模块提供功能的库(请参阅此处)。这个模块中的每一个都可以使用 GWTP 和 DI,但没有 Ginjector。您宁愿提供 gin 模块来配置模块依赖项。在创建 ginjector 的应用程序中,您只需安装库的 gin 模块。

!!!不要忘记:使用 GWTP 时,服务器端也有 DI,其功能完全相同。

客户端的示例。考虑我们有两个假设组件,它们是某些页面等的复合物。P1 和 P2。然后使用 P1.gwt.xml 和 P2.gwt.xml 等模块配置创建两个 GWT 模块。这些模块中的每一个都有一个 GinModule 例如

public class P1GinModule extends AbstractGinModule {

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

在您的应用程序 A1 中创建您的 gin 配置,在其中安装所需的模块,在本例中为 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 ...
}

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

使用这种方法,您可以将所有依赖注入工作用于在库中推出并通过 GWT 模块提供的不同模块。

希望有帮助。

于 2011-12-21T12:58:24.180 回答