1

現在成長中のGWTPアプリを開発しているので、将来的には2つ以上に分割できるように開発したいと思っています。

私が取り組んでいるプロジェクト P は、概念的に 2 つのプロジェクト P1 と P2 に分けられ、2 つの異なるチームの人々が取り組んでいるとします。P1 と P2 は、標準のプレゼンター クラスの拡張、共通のプレゼンターとビュー、構成など、共通のものを共有します。P1、P2、および他の 2 つのプロジェクトと GWTP プロジェクトの依存関係となる共通プロジェクト Px の合計であるアプリケーションを作成したいと思います。

これが可能かどうかはわかりませんが、主な問題は、3 つの Ginjector (共通のもの) と 2 つの拡張機能 (プロジェクトごとに 1 つ) が必要になることだと思います。

このような状況に対処する例はありますか? それとも、別のアプローチを試す必要がありますか?

4

1 に答える 1

1

私があなたのコメントを正しく理解していれば、GWT モジュールを介して機能を提供するライブラリではなく、ラッパーは必要ないことをお勧めします (こちらを参照してください)。このモジュールはそれぞれ GWTP と DI を使用できますが、Ginjector は使用できません。むしろ、モジュールの依存関係を構成する gin モジュールを提供します。ginjector が作成されるアプリケーションでは、ライブラリの gin モジュールをインストールするだけです。

!!!忘れないでください: GWTP を使用する場合、サーバー側にも DI があり、まったく同じように機能します。

クライアント側の例。いくつかのページなどの複合体である2つのコンポーネントがあるとします.P1とP2. 次に、P1.gwt.xml と P2.gwt.xml のようなモジュール構成で 2 つの GWT モジュールを作成します。これらのモジュールにはそれぞれ GinModule があります。

public class P1GinModule extends AbstractGinModule {

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

アプリケーション A1 で、必要なモジュール (この場合は P1GinModule と P2GinModule) をインストールする gin 構成を作成します。

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 としましょう。2 つの GWT モジュールを継承することを忘れないでください。

このアプローチでは、ライブラリに展開され、GWT モジュールを介して提供されるさまざまなモジュールに対して、すべての依存性注入が機能します。

それが役に立ったことを願っています。

于 2011-12-21T12:58:24.180 に答える