2017-04-24 17 views
1

コンストラクタベースのインジェクションでは、すべての依存関係を持つ完全なオブジェクトが作成されますが、セッターベースのインジェクションの場合には、部分的な依存関係を持つオブジェクトがどのように作成されますか?なぜセッター注入で春の依存性注入が保証されないのですか?

+0

セッターはメソッド呼び出しであり、そのメソッドが呼び出される保証はありません。コンストラクタでは、無効な状態でオブジェクトを構築することはできません。 –

+1

Springはデフォルトコンストラクタを呼び出し、setterを介してこのインスタンスに値を注入しようとします。違いは見えません。とにかく、うまく構築されたオブジェクトが得られます。 – Andrew

+0

@ M.Deinum:私の理解によれば、セッターはデフォルトで春から呼び出され、どのように逃してしまいますか? –

答えて

0

オブジェクトを作成する唯一の方法はすべての引数を持つため、依存関係が必要な場合はコンストラクタベースの注入を使用する必要があります。

セッターベース注入は、依存性が必要でない場合に使用する必要があります。オブジェクトが最初にインスタンス化され、依存関係の設定が呼び出されますが、依存関係が見つからない場合は、nullが挿入されます。

コンストラクターとセッターベースの注入の両方を混在させることができます。

+0

「ヌル」を挿入しません。依存関係が必要ない場合は、setterをまったく呼び出すことはありません。 –