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の依存関係
必要なMavendependencyをpom.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. BeanFactoryとClassPathResource
ClassPathResourceはorg.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です。