@Inject
にconstructor
という名前のクラスがありますが、Scope
が定義されていません。どのようなScope
注射後に属しますか?定義されていないスコープを持たない注釈付きコンストラクタを挿入する
// No scope
public class A {
@Inject public A() {}
}
@Inject
にconstructor
という名前のクラスがありますが、Scope
が定義されていません。どのようなScope
注射後に属しますか?定義されていないスコープを持たない注釈付きコンストラクタを挿入する
// No scope
public class A {
@Inject public A() {}
}
/バインディングクラスは、、スコープ外になり、新しいインスタンスは、すべての注射のために作成されます。
ダガーにかかわらず、コンポーネントの範囲の、スコープ外の依存関係がbound in any componentにすることができる:
- 任意のタイプスコープ外であるか、またはコンポーネントのスコープのいずれかと一致@Scopeアノテーションを有する@Injectコンストラクタと
クラスやコンポーネントががそれらに割り当てられた有効なスコープを持っていないとき、彼らは1トラック:番目の生涯に1を
Dagger 2は、グラフ内のスコープ付きインスタンスをコンポーネント実装のインスタンスに関連付けているため、コンポーネント自体は、どのスコープを宣言する必要があるかを宣言する必要があります。たとえば、同じコンポーネントに@Singletonバインディングと@RequestScopedバインディングを持つことは意味がありません。なぜなら、これらのスコープはライフサイクルが異なり、したがってライフサイクルの異なるコンポーネントに存在する必要があるからです。あなたは@Singletonは「常にこのインスタンスを維持するか、再利用する」意味すると@RequestScopedは「内このインスタンスを維持するか、再利用を意味し、「インスタンスが保持され、再利用される条件」とスコープを考える場合言い換える
、同じリクエスト(要求スコープのコンポーネントが存在する限り)」の場合、スコープがないは、「このインスタンスを保持しない、または再利用しない」ことを意味します。