コンストラクター経由の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)