libro
www.tuyano.com
初心者のためのSpring Framework入門

Dependency Injection(DI)とBean (4/5)

作成:2015-07-05 10:20
更新:2015-07-05 10:23

■アプリケーションからBeanを利用する

では、bean.xmlで定義したBeanをアプリケーション内から作成し利用してみましょう。MySpringAppcom.tuyano.libroパッケージに「App.java」を用意し、下のリスト欄のようにソースコードを記述します。実行すると、SampleBeanprintlnし、「Hello, this is Bean Sample!!」と表示されます。

では、ここで行っていることを簡単に説明しましょう。

1. Bean設定ファイルからApplicationContextを作成する
ApplicationContext app = new 
    ClassPathXmlApplicationContext("bean.xml");
Bean利用の基本は、まず「ApplicationContext」というクラスのインスタンスを取得することです。これは名前の通り、アプリケーションのコンテキストを管理するものです。この場合のコンテキストとは、要するに「Bean」のことだ、と考えていいでしょう。

このApplicationContextを作成するには、いくつかのやり方があります。その1つが、Bean設定ファイル(先ほど作ったbean.xml)を読み込み、それを元に作成するというものです。Bean設定ファイルから作成されるApplicationContextは、ClassPathXmlApplicationContextというクラスになります。これは、ClassPathXmlApplicationContextのサブクラスで、XMLファイルを扱うための機能が追加されたものです。引数には、Bean設定ファイル名を指定します。

2. Beanを取得する
SampleBeanInterface bean1 = (SampleBeanInterface)app.getBean("bean1");
ApplicationContextインスタンスが用意できれば、後は簡単。「getBean」メソッドを呼び出すだけです。これは引数に指定した名前のBeanインスタンスを取り出すものです。先にbean.xmlを作成した際、<bean id="bean1" ……>と書いたことを思い出してください。このidで指定された値が、getBeanの引数に使われます。

こうして取り出されたBeanは、普通のインスタンスとまったく同様に使うことができます。注目して欲しいのは、このBeanには、既にmessageプロパティの値が設定済みである、という点です。bean.xmlで<property>タグを記述していましたね?

ということは、bean.xmlの値を書き換えるだけで、ソース・コードをまったく変更することなく、使用するSampleBeanの内容を変えることができる、ということになります。これこそが「依存性注入」の働きなのです。Beanを利用するコードには一切触れず、外部からBeanの内容を操作することができるのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package com.tuyano.libro;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("bean.xml");
        SampleBeanInterface bean1 = (SampleBeanInterface)app.getBean("bean1");
        System.out.println(bean1);
    }

}

※関連コンテンツ

「初心者のためのSpring Framework入門」に戻る