Guiceについての私の理解は次のとおりです。
- コンストラクターレベルのインジェクション(
@Inject public class Widget(Dep one, Dep two)
)は、Guiceが;を介して呼び出されるたびに、常にそのコンストラクターをインジェクトすることを意味します。Injector
と - メソッドレベルのインジェクション(
@Inject public void setDepOne(Dep one)
)は、オブジェクトがGuiceを使用して作成されている限り、Guiceが呼び出されるたびに常にそのメソッドをインジェクトすることを意味します。Widget
Injector
これらの2つの仮定は正しいですか?そうでない場合は、明確にしてください!
だから私がハングアップしているのは、フィールドレベルの注入の意味は何ですか?
@Inject private Dep one;
これは、オブジェクトがGuiceインジェクターを介して作成されるときに、Guiceが常にプロパティを注入することを意味しますか?その場合、コンストラクターレベルのインジェクションと競合すると思います。
たとえば、次の場合に競合/エラーが発生しますか?
public class Widget {
@Inject private Dep one;
private Dep two;
// Dep one already injected as a field!
@Inject public Widget(Dep one, Dep two) {
// ...
}
}
前もって感謝します!