Dependency Injection(DI)とBean (4/5)
作成:2015-07-05 10:20
更新:2015-07-05 10:23
更新:2015-07-05 10:23
■アプリケーションからBeanを利用する
では、bean.xmlで定義したBeanをアプリケーション内から作成し利用してみましょう。MySpringAppのcom.tuyano.libroパッケージに「App.java」を用意し、下のリスト欄のようにソースコードを記述します。実行すると、SampleBeanをprintlnし、「Hello, this is Bean Sample!!」と表示されます。
では、ここで行っていることを簡単に説明しましょう。
1. Bean設定ファイルからApplicationContextを作成する
このApplicationContextを作成するには、いくつかのやり方があります。その1つが、Bean設定ファイル(先ほど作ったbean.xml)を読み込み、それを元に作成するというものです。Bean設定ファイルから作成されるApplicationContextは、ClassPathXmlApplicationContextというクラスになります。これは、ClassPathXmlApplicationContextのサブクラスで、XMLファイルを扱うための機能が追加されたものです。引数には、Bean設定ファイル名を指定します。
2. Beanを取得する
こうして取り出されたBeanは、普通のインスタンスとまったく同様に使うことができます。注目して欲しいのは、このBeanには、既にmessageプロパティの値が設定済みである、という点です。bean.xmlで<property>タグを記述していましたね?
ということは、bean.xmlの値を書き換えるだけで、ソース・コードをまったく変更することなく、使用するSampleBeanの内容を変えることができる、ということになります。これこそが「依存性注入」の働きなのです。Beanを利用するコードには一切触れず、外部からBeanの内容を操作することができるのです。
では、ここで行っていることを簡単に説明しましょう。
1. Bean設定ファイルからApplicationContextを作成する
ApplicationContext app = newBean利用の基本は、まず「ApplicationContext」というクラスのインスタンスを取得することです。これは名前の通り、アプリケーションのコンテキストを管理するものです。この場合のコンテキストとは、要するに「Bean」のことだ、と考えていいでしょう。
ClassPathXmlApplicationContext("bean.xml");
この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の内容を操作することができるのです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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入門」に戻る