目次へ

2.2. Bean 定義ファイル

BeanFactory は Bean 定義ファイルを元に依存関係を解決します。Bean 定義ファイルには主に以下のような情報を記述します。

  • 管理する Bean のクラス名
  • コンテナ内での振る舞いに関する情報
  • Bean を生成する際のコンストラクタ引数やセットするプロパティ値
  • ある Bean が動作する場合に必要とする Bean に関する情報

具体的に以下の Bean を例に取り上げ説明します。

public class Person {
    public void greet() {
        System.out.println("Hello, World!!");
    }
}

上記は標準出力に文字列を出力するメソッドだけをもつ単純なクラスです。このクラスを BeanFactory で管理するためには以下のような Bean 定義ファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
  "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
  <bean id="person" class="Person"/>
</beans>

Bean 定義ファイルは XML でルート要素は beans です。この beans 要素以下に複数の bean 要素を記述します。bean 要素の id 属性には生成する Bean の名前を指定します。この名前は他の bean 要素から参照されたり、BeanFactory から Bean を取り出す際に指定するものです。class 属性には生成する Bean のクラスを完全限定名で指定します。ここではデフォルトパッケージの Person クラスを "person" という名前で定義しています。

ファイル名は何でも構いませんが、ここでは beans.xml とします。最後に実行クラスです。

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

public class Main {
    public static void main(String[] args) throws Exception {
        Resource res = new FileSystemResource("beans.xml");
        XmlBeanFactory factory = new XmlBeanFactory(res);
        Person person = (Person)factory.getBean("person");
        person.greet();
    }
}

BeanFactory から Bean を取り出すには getBean() メソッドを使用します。引数に Bean 定義ファイルで指定した Bean の名前を指定します。上記のクラスを実行すると以下の出力を得ます。

Hello, World!!

実習課題 1

説明で取り上げたプログラムを実行しなさい。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp