3
private Service service;

@Inject
public ClassName(final Service service) {
    this.service = service;
}

@Inject
private Service service;

この 2 種類の注射の違いを教えてください。

4

1 に答える 1

2

最初のものは、インジェクターがコンストラクターを呼び出し、適切な Service オブジェクトを提供することを示しています。コンストラクタで何をするかはあなた次第です。

2番目のものは、メンバー変数を適切に設定すると述べています(つまり、デフォルトのコンストラクターを使用でき、それでも魔法のように変数を設定します)。

一般に、依存関係を明示的に保つため、最初の方法を好みますが、方法 2 を使用する正当な理由があると確信しています。

私は RoboGuice を使用したことはありませんが、通常の Guice と同じ一般原則を持っていると思います。関連する @Inject ドキュメントは、その wiki にあります: http://code.google.com/p/google-guice/wiki /注射

于 2011-06-30T04:41:29.583 に答える