春の依存性注入(DI)
Springフレームワークでは、Dependency Injection(DI)設計パターンを使用して、相互間のオブジェクトの依存関係を定義します。 2つの主要なタイプで終了します。
-
セッター注入
-
コンストラクタインジェクション
1. セッター注入
これは最も一般的でシンプルなDIメソッドであり、setterメソッドを介して依存関係を注入します。
例
セッターメソッドを持つヘルパークラス。
package com.example.output; import com.example.output.IOutputGenerator; public class OutputHelper { IOutputGenerator outputGenerator; public void setOutputGenerator(IOutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } }
Beanを宣言し、セッターインジェクション(プロパティタグ)を介して依存関係を設定するためのBean構成ファイル。
設定メソッド(setOutputGenerator)を介して「CsvOutputGenerator」Beanを「OutputHelper」オブジェクトに挿入するだけです。
2. コンストラクタインジェクション
このDIメソッドは、コンストラクターを介して依存関係を注入します。
例
コンストラクターを持つヘルパークラス。
package com.example.output; import com.example.output.IOutputGenerator; public class OutputHelper { IOutputGenerator outputGenerator; OutputHelper(IOutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } }
Beanを宣言し、コンストラクター注入(constructor-argタグ)を介して依存関係を設定するためのBean構成ファイル。
コンストラクターを介して「CsvOutputGenerator」Beanを「OutputHelper」オブジェクトに挿入するだけです。
セッター注入またはコンストラクター注入?
Springフレームワークによって設定される難しいルールはありません。プロジェクトのニーズに合ったタイプのDIを使用してください。 ただし、セッターインジェクションはシンプルであるため、ほとんどのシナリオで常に選択されます。