Spring BeanFactoryのガイド

Spring BeanFactoryのガイド

1. 前書き

この記事では、exploring the Spring BeanFactory APIに焦点を当てます。

BeanFactoryインターフェースは、Spring IoCコンテナーを介してあらゆる性質のオブジェクトを管理するための、シンプルでありながら柔軟な構成メカニズムを提供します。 この中央のSpringAPIを深く掘り下げる前に、いくつかの基本を見てみましょう。

2. 基本-豆とコンテナ

簡単に言えば、Beanは、Springアプリケーションのバックボーンを形成し、Spring IoCコンテナによって管理されるJavaオブジェクトです。 コンテナによって管理されることを除いて、Beanについて特別なことは何もありません(他のすべての点で、Beanはアプリケーション内の多くのオブジェクトの1つです)。

Springコンテナは、Beanのインスタンス化、構成、および組み立てを行います。 コンテナは、アプリケーション用に定義した構成メタデータを読み取ることで、インスタンス化、構成、および管理するオブジェクトに関する情報を取得します。

3. Mavenの依存関係

必要なMavendependencypom.xmlファイルに追加しましょう。 Spring Beans依存関係を使用してBeanFactoryをセットアップします。


    org.springframework
    spring-beans
    5.1.4.RELEASE

4. BeanFactoryインターフェース

まず、org.springframework.beans.factoryパッケージのinterface definitionを見て、その重要なAPIのいくつかについてここで説明するのは興味深いことです。

4.1. getBean() API

getBean()メソッドのさまざまなバージョンは、指定されたBeanのインスタンスを返します。これは、アプリケーション全体で共有または独立している場合があります。

4.2. containsBean() API

このメソッドは、このBeanファクトリに特定の名前のBeanが含まれているかどうかを確認します。 具体的には、getBean(java.lang.String)が指定された名前のBeanインスタンスを取得できるかどうかを確認します。

4.3. isSingleton() API

isSingleton APIを使用して、このBeanが共有シングルトンであるかどうかを照会できます。 つまり、getBean(java.lang.String)が常に同じインスタンスを返す場合です。

4.4. isPrototype() API

このAPIは、getBean(java.lang.String)が独立したインスタンスを返すかどうかを確認します。つまり、プロトタイプスコープで構成されたBeanであるかどうかを確認します。

注意すべき重要なことは、falseを返すこのメソッドは、シングルトンオブジェクトを明確に示していないということです。 非独立インスタンスを示し、他のスコープにも対応する場合があります。

共有シングルトンインスタンスを明示的にチェックするには、isSingleton(java.lang.String)操作を使用する必要があります。

4.5. その他のAPI

isTypeMatch(String name, Class targetType)メソッドは、指定された名前のBeanが指定されたタイプと一致するかどうかをチェックしますが、getType(String name)は、指定された名前のBeanのタイプを識別するのに役立ちます。

最後に、getAliases(String name)は、指定されたBean名のエイリアスを返します(存在する場合)。

5. BeanFactory API

BeanFactoryは、Bean定義を保持し、クライアントアプリケーションから要求されるたびにそれらをインスタンス化します。つまり、次のことを意味します。

  • Beanをインスタンス化し、適切な破棄メソッドを呼び出すことにより、Beanのライフサイクルを処理します

  • 依存オブジェクトをインスタンス化しながら、依存オブジェクト間の関連付けを作成できます

  • BeanFactoryはアノテーションベースの依存性注入をサポートしていませんが、BeanFactoryのスーパーセットであるApplicationContextはサポートしていることを指摘することが重要です。

Application Contextを読んで、何ができるかを調べてください。

6. Beanの定義

単純なBeanを定義しましょう。

public class Employee {
    private String name;
    private int age;

    // standard constructors, getters and setters
}

7. XMLを使用したBeanFactoryの構成

BeanFactoryをXMLで構成できます。 ファイルbean factory-example.xml:を作成しましょう




  
    
    
  
  

employeeBeanのエイリアスを作成したことに注意してください。

8. BeanFactoryClassPathResource

ClassPathResourceorg.springframework.core.ioパッケージに属しています。 以下に示すように、簡単なテストを実行し、ClassPathResourceを使用してXmlBeanFactoryを初期化します。

public class BeanFactoryWithClassPathResourceTest {

    @Test
    public void createBeanFactoryAndCheckEmployeeBean() {
        Resource res = new ClassPathResource("beanfactory-example.xml");
        BeanFactory factory = new XmlBeanFactory(res);
        Employee emp = (Employee) factory.getBean("employee");

        assertTrue(factory.isSingleton("employee"));
        assertTrue(factory.getBean("employee") instanceof Employee);
        assertTrue(factory.isTypeMatch("employee", Employee.class));
        assertTrue(factory.getAliases("employee").length > 0);
    }
}

9. 結論

この簡単な記事では、SpringBeanFactory APIが提供する主なメソッドと、構成とその使用法を説明する例について学びました。

これらの例を裏付けるコードは、すべて利用可能なover on GitHubです。