どのシナリオでコンストラクター注入とセッター注入を使用する必要があるかを理解するのを手伝ってください。適切な例を教えてください。
前もって感謝します。
通常、すべての必須のコラボレーターにはコンストラクターインジェクションを使用し、他のすべてのプロパティにはセッターインジェクションを使用することをお勧めします。繰り返しになりますが、コンストラクターインジェクションは、すべての必須プロパティが満たされていることを保証し、無効な状態(コラボレーターを通過していない)でオブジェクトをインスタンス化することは単純に不可能です。つまり、コンストラクタインジェクションを使用する場合、必要なプロパティが設定されていることを確認するために専用のメカニズムを使用する必要はありません(通常のJavaメカニズムを除く)。
個人的には、コンストラクター インジェクションを好む傾向がありますが、主な理由は 1 つあります。
不変性。
不変オブジェクトを使用すると、コードをスレッド セーフにすることが容易になります。singleton
これは、Springスコープ オブジェクトを扱う場合に特に重要です。それらが変更可能で、異なるスレッドでアクセスされる場合、共有状態を変更することは安全ではありません。
不変性が有益である理由は他にもありますが、それについてはWeb ページを続けます。