アノテーションによるDIの実装 (4/5)
作成:2015-07-11 08:51
更新: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利用シーンで用いられます。
これでコンポーネントは完成ですが、実はもう1つだけやっておくことがあります。Bean設定クラス(SampleBeanConfig)の宣言の手前に、以下のアノテーションを追加して下さい。
この@ComponentScanは、コンポーネントを検索しインスタンスを作成してApplicationContextに登録するためのものです。コンポーネント(@Componentを付けたクラス)を利用する場合には、設定クラスに必ずこれを用意します。これにより、コンポーネントが自動的にインスタンス化され利用できるようになります。
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を付けたクラス)を利用する場合には、設定クラスに必ずこれを用意します。これにより、コンポーネントが自動的にインスタンス化され利用できるようになります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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入門」に戻る