0

私は、それぞれ独自の依存関係を持つクラスである 3 つの引数を受け取るコンストラクターを持つクラス Worker を持っています。

private A a; private B b; private C c;

@Inject
public Worker(A a, B b, C c) {
    this.a = a; this.b = b; this.c = c; 
}


public void run() {...}

Worker クラスにある私のメインには、次のものがあります。

public void main(String[] args) throws Exception {
    Injector injector = Guice.createInjector(new WorkerModule());
    a = injector.getInstance(A.class);
    b = injector.getInstance(B.class);
    c = injector.getInstance(C.class);

    run();   

}

私の質問は、Worker の getInstance (つまり、injector.getInstance(Worker.class)) を許可するようにモジュールをどのように構成すればよいのでしょうか? そして、ワーカークラスでワーカーをどのように割り当てる必要がありますか? ありがとう。

4

1 に答える 1

0

まず第一に、Guice ではデフォルトでオンデマンド インジェクションが有効になっているためABおよびCが非抽象クラスの場合、モジュールは空になる可能性があります。Workerクラスインスタンスを要求すると、Guice は依存関係を自動的に解決します。

Worker worker = injector.getInstance(Worker.class);

Aここで、Guice は、BおよびCインスタンスを自動的に作成し、Workerコンストラクターに提供します。

第二に、あなたのmainメソッドは静的ではありません。プログラムのエントリ ポイントとしては機能しません。静的にする必要があります。次に、次のようになります。

public static void main(String[] args) throws Exception {
    Injector injector = Guice.createInjector(new WorkerModule());

    Worker worker = injector.getInstance(Worker.class);
    worker.run();
}
于 2013-07-22T11:07:48.190 に答える