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

アノテーションによるDIの実装 (4/5)

作成:2015-07-11 08:51
更新:2015-07-11 08:51

■コンポーネントを作成しよう

アノテーションによるBean利用は、いろいろと応用ができます。基本がわかったら、続いてBeanを利用する「コンポーネント」を使ってみましょう。

Spring Frameworkでは、高度な機能を持ったクラスをコンポーネントとして定義し、Beanと同じような感覚で利用できます。簡単なサンプルとして、「BeanHolder」というコンポーネントクラスを作ってみましょう。

com.tuyano.libroパッケージに、BeanHolderクラスを作成し、下の掲載するようにソースコードを記述して下さい。

このBeanHolderは、ごくシンプルなコンポーネントです。このコンポーネント内では、先ほどのBean設定クラスで用意したBeanをフィールドに保管しており、それを利用したメソッドが用意されています。ポイントを整理していきましょう。

1. 「@Component」アノテーション
クラスの宣言の手前には、@Componentというアノテーションがつけられています。これは、そのクラスがコンポーネントであることを示すためのものです。コンポーネントクラスには必ずこれを付けておきます。

2. 「@Autowired」アノテーション
このクラスには、SampleBeanInterfaceをフィールドに保管しています。このフィールドには、@Autowiredというアノテーションがつけられています。これは、Bean設定クラス(あるいはファイル)によって自動生成されたBeanインスタンスを自動的にバインドするためのものです。

これをつけることで、生成されたBean群の中からSampleBeanInterfaceインスタンスのものを探してこのbeanフィールドに自動的に代入するのです。この@Autowairedは、コンポーネントに限らず、さまざまなBean利用シーンで用いられます。


■SampleBeanConfigクラスの修正

これでコンポーネントは完成ですが、実はもう1つだけやっておくことがあります。Bean設定クラス(SampleBeanConfig)の宣言の手前に、以下のアノテーションを追加して下さい。
@ComponentScan
既に@Configurationアノテーションが付けられていますから、その上か下に追加すればいいでしょう。

この@ComponentScanは、コンポーネントを検索しインスタンスを作成してApplicationContextに登録するためのものです。コンポーネント(@Componentを付けたクラス)を利用する場合には、設定クラスに必ずこれを用意します。これにより、コンポーネントが自動的にインスタンス化され利用できるようになります。

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

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

●プログラム・リスト●

package com.tuyano.libro;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class BeanHolder {
    
    @Autowired
    private SampleBeanInterface bean;
    
    public void showMessage() {
        System.out.println("*print by BeanHolder*");
        System.out.println(bean);
        System.out.println("*end*");
    }

}
※関連コンテンツ

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