2016-10-13 4 views

答えて

0

/バインディングクラスは、、スコープ外になり、新しいインスタンスは、すべての注射のために作成されます。

ダガーにかかわらず、コンポーネントの範囲の、スコープ外の依存関係がbound in any componentにすることができる:

  • 任意のタイプスコープ外であるか、またはコンポーネントのスコープのいずれかと一致@Scopeアノテーションを有する@Injectコンストラクタと

クラスやコンポーネントがそれらに割り当てられた有効なスコープを持っていないとき、彼らは1トラック:番目の生涯に1を

Dagger 2は、グラフ内のスコープ付きインスタンスをコンポーネント実装のインスタンスに関連付けているため、コンポーネント自体は、どのスコープを宣言する必要があるかを宣言する必要があります。たとえば、同じコンポーネントに@Singletonバインディングと@RequestScopedバインディングを持つことは意味がありません。なぜなら、これらのスコープはライフサイクルが異なり、したがってライフサイクルの異なるコンポーネントに存在する必要があるからです。あなたは@Singletonは「常にこのインスタンスを維持するか、再利用する」意味すると@RequestScopedは「内このインスタンスを維持するか、再利用を意味し、「インスタンスが保持され、再利用される条件」とスコープを考える場合言い換える

、同じリクエスト(要求スコープのコンポーネントが存在する限り)」の場合、スコープがないは、「このインスタンスを保持しない、または再利用しない」ことを意味します。

関連する問題