1.はじめに

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


http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html

Spring IoCコンテナ経由の自然。この中心的なSpring APIに深く入る前に、いくつかの基本を見てみましょう。

2.基本 – 豆とコンテナ

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

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

3. Mavenの依存関係

必要なMaven

dependency

をに追加しましょう

pom.xml

ファイル。 SpringFeanの依存関係を使用してBeanFactoryを設定します。

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-beans</artifactId>
  <version>4.3.4.RELEASE</version>
</dependency>

4.

BeanFactory

インターフェース


https://github.com/spring-projects/spring-framework/blob/master/spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryを見ることから始めるのは面白いです。


org.springframework.beans.factory

パッケージのjava[interface definition]およびその重要なAPIのいくつかをここで議論する。


4.1.

getBean()

API


httpsのさまざまなバージョン://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/beans/factory/BeanFactory.html#getBean-java.lang.String-[]

method return指定されたBeanのインスタンス。アプリケーション全体で共有または独立しています。


4.2.

containsBean()

API

このメソッドは、このBeanファクトリに指定された名前のBeanが含まれているかどうかを確認します。具体的には、https://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/beans/factory/BeanFactory.html#getBean-java.lang.String-[

getBean(java.lang.String)

]与えられた名前のbeanインスタンスを取得することができます。


4.3.

isSingleton()

API

このBeanが共有シングルトンかどうかを調べるには、

isSingleton

APIを使用できます。


getBean(javaの場合です。 lang.String)


は常に同じインスタンスを返します。


4.4.

isPrototype()

API

このAPIはhttps://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/beans/factory/BeanFactory.html#getBean-java.lang.String-[

getBean( java.lang.String)

]は独立したインスタンスを返します – つまりプロトタイプスコープで設定されたbeanかそうでないかを意味します。

注意すべき重要なことは、

false

を返すこのメソッドがシングルトンオブジェクトを明確に示していないことです。それは他のスコープにも対応するかもしれない独立していないインスタンスを示します。



isSingleton()を使用する必要があります。 java.lang.String)


共有シングルトンインスタンスを明示的にチェックするための操作。


4.5. その他のAPI


isTypeMatch(String name、Class targetType)

メソッドは指定された名前のBeanが指定された型と一致するかどうかを確認しますが、

()

は指定された名前のBeanの型を識別するのに役立ちます。

最後に、

()

は、指定されたBean名のエイリアスがあればそれを返します。

5.

BeanFactory

API


BeanFactory

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

インスタンス化することで、Beanのライフサイクルを管理します。

適切な破壊方法を呼び出す
** 依存オブジェクト間の関連付けを作成することができます

それらをインスタンス化する
**

BeanFactory

は、をサポートしていないことを指摘することが重要です。

アノテーションベースの依存性注入は、BeanFactoryのスーパーセットである

ApplicationContext

に対して行います。

アプリケーションコンテキストで何ができるかを調べるには、https://spring.io/understanding/application -context[理解しているアプリケーションコンテキスト]を読んでください。

6. Beanを定義する

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

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

   //standard constructors, getters and setters
}

7. XMLで

BeanFactory

を設定する

XMLで

BeanFactory

を設定できます。 __bean factory-example.xmlファイルを作成しましょう。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

  <bean id="employee" class="com.baeldung.beanfactory.Employee">
    <constructor-arg name="name" value="Hello! My name is Java"/>
    <constructor-arg name="age" value="18"/>
  </bean>
  <alias name="employee" alias="empalias"/>
</beans>


employee

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

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.まとめ

この簡単な記事では、Spring

BeanFactory

APIが提供する主なメソッドと、その構成とその使用方法を説明するための例について学びました。

これらの例を裏付けるコードはすべてhttps://github.com/eugenp/tutorials/tree/master/spring-core/src/test/java/com/baeldung/beanfactory[over on GitHubプロジェクト]です。