コンストラクター経由のSpring DI
Springを使用して、コンストラクターを介してBeanに依存性を注入します。
1. 出力ジェネレーター
インターフェースとその実装クラス。
package com.example.output; public interface IOutputGenerator { public void generateOutput(); }
package com.example.output.impl; import com.example.output.IOutputGenerator; public class JsonOutputGenerator implements IOutputGenerator { public void generateOutput(){ System.out.println("This is Json Output Generator"); } }
2. ヘルパークラス
ヘルパークラスは、後でコンストラクタを介してSpringを使用して出力ジェネレーターを実行します。
package com.example.output; import com.example.output.IOutputGenerator; public class OutputHelper { IOutputGenerator outputGenerator; public void generateOutput() { outputGenerator.generateOutput(); } //DI via constructor public OutputHelper(IOutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } }
3. スプリング構成
以下のSpringBean構成を参照してください。Springは、コンストラクター「public OutputHelper(IOutputGenerator outputGenerator)」を介して、「JsonOutputGenerator」の上でこの「OutputHelper」クラスにDIします。
4. それを実行します
すべてをロードして実行します。
package com.example.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.example.output.OutputHelper; public class App { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "SpringBeans.xml"); OutputHelper output = (OutputHelper)context.getBean("OutputHelper"); output.generateOutput(); } }
出力
This is Json Output Generator
Constructor type ambiguities
複数のパラメーターをサポートするコンストラクターの場合、一般的なコンストラクター注入タイプのあいまいさの問題が発生します。このsolutionをお読みください。
ソースコードをダウンロード
ダウンロード–Spring-DI-constructor-example.zip(6KB)