春のXMLベースのインジェクション

SpringでのXMLベースのインジェクション

1. 前書き

この基本的なチュートリアルでは、Spring Frameworkを使用して簡単なXMLベースのBean設定を行う方法を学びます。

2. 概要

pom.xmlにSpringのライブラリ依存関係を追加することから始めましょう:


    org.springframework
    spring-context
    5.1.4.RELEASE

Spring依存関係の最新バージョンはhereにあります。

3. 依存性注入–概要

Dependency injectionは、オブジェクトの依存関係が外部コンテナーによって提供される手法です。

実際にビジネスロジックを処理するサービスに依存するアプリケーションクラスがあるとしましょう。

public class IndexApp {
    private IService service;
    // standard constructors/getters/setters
}

ここで、IServiceがインターフェイスであるとしましょう。

public interface IService {
    public String serve();
}

このインターフェイスには複数の実装を含めることができます。

1つの潜在的な実装を簡単に見てみましょう。

public class IndexService implements IService {
    @Override
    public String serve() {
        return "Hello World";
    }
}

ここで、IndexAppは、IServiceと呼ばれる低レベルコンポーネントに依存する高レベルコンポーネントです。

本質的には、さまざまな要因に基づいて変化する可能性のあるIServiceの特定の実装からIndexAppを切り離しています。

4. 依存性注入–実行中

依存関係を注入する方法を見てみましょう。

4.1. プロパティを使用する

XMLベースの構成を使用して依存関係を相互に関連付ける方法を見てみましょう。




    

ご覧のとおり、IndexServiceのインスタンスを作成し、それにIDを割り当てています。 デフォルトでは、Beanはシングルトンです。 また、IndexAppのインスタンスを作成しています。

このBean内で、セッターメソッドを使用して他のBeanを注入しています。

4.2. コンストラクターの使用

setterメソッドを介してBeanを注入する代わりに、コンストラクターを使用して依存関係を注入できます。


    

4.3. 静的ファクトリの使用

また、工場から返されたBeanを注入することもできます。 指定された数に基づいてIServiceのインスタンスを返す単純なファクトリを作成しましょう。

public class StaticServiceFactory {
    public static IService getNumber(int number) {
        // ...
    }
}

次に、上記の実装を使用して、XMLベースの構成を使用してBeanをIndexAppに注入する方法を見てみましょう。


    



    

上記の例では、factory-methodを使用して静的なgetServiceメソッドを呼び出し、IndexApp.に注入するIDmessageServiceのBeanを作成しています。

4.4. ファクトリーメソッドの使用

指定された数に基づいてIServiceのインスタンスを返すインスタンスファクトリについて考えてみましょう。 今回は、メソッドは静的ではありません。

public class InstanceServiceFactory {
    public IService getNumber(int number) {
        // ...
    }
}

次に、上記の実装を使用して、XML構成を使用してBeanをIndexAppに注入する方法を見てみましょう。



    


    

上記の例では、factory-methodを使用してInstanceServiceFactoryのインスタンスでgetServiceメソッドを呼び出し、IndexAppに挿入するIDmessageServiceのBeanを作成しています。 s。

5. テスト

これは、設定済みのBeanにアクセスする方法です。

@Test
public void whenGetBeans_returnsBean() {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("...");
    IndexApp indexApp = applicationContext.getBean("indexApp", IndexApp.class);
    assertNotNull(indexApp);
}

6. 結論

このクイックチュートリアルでは、Spring Frameworkを使用してXMLベースの構成を使用して依存関係を注入する方法の例を示しました。

これらの例の実装はthe GitHub projectにあります。これはMavenベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。