Dependency Injection(DI)とBean (5/5)
作成:2015-07-05 10:21
更新:2015-07-05 10:21
更新:2015-07-05 10:21
■別のBeanを追加すると?
これで依存性注入の基本的な仕組みはわかりました。更に一歩進めて、別のBeanを作って利用してみることにしましょう。
下のリスト欄に、簡単なサンプルを挙げておきます。今度は、「SomeBean」というクラスを作成してみました。やはりSampleBeanInterfaceをimplementsしており、messageプロパティを持っています。ただし、実際にはStringのmessageというフィールドは存在しません。内部にはDateとSimpleDateFormatをフィールドとして保管しておき、日時のテキストをmessageとしてやりとりできるようにしてあります。
クラスの用意ができたら、bean.xmlを開き、先に記述した<bean>タグの部分を下のように書き換えてみてください。
これで実行すると、出力されるテキストが「SomeBean [date=2015/07/24]」と変わります。SomeBeanインスタンスが作成され利用されるようになっていることがわかるでしょう。Appのソースコードには一切手を触れていないのに、です。
この例のように、インターフェイスを定義してその実装クラスを複数用意しておけば、単にプロパティの値を設定するだけでなく、そのプロパティの処理方法などまで自由に変更できるようになります。使うクラスやプロパティの値は、コードに一切触れることなく変更もできます。「Beanインスタンスを設定ファイルから自動生成する」というやり方の利点がわかってきたのではないでしょうか。
下のリスト欄に、簡単なサンプルを挙げておきます。今度は、「SomeBean」というクラスを作成してみました。やはりSampleBeanInterfaceをimplementsしており、messageプロパティを持っています。ただし、実際にはStringのmessageというフィールドは存在しません。内部にはDateとSimpleDateFormatをフィールドとして保管しておき、日時のテキストをmessageとしてやりとりできるようにしてあります。
クラスの用意ができたら、bean.xmlを開き、先に記述した<bean>タグの部分を下のように書き換えてみてください。
<bean id="bean1" class="com.tuyano.libro.SomeBean">
<property name="message" value="2015/7/24" />
</bean>
これで実行すると、出力されるテキストが「SomeBean [date=2015/07/24]」と変わります。SomeBeanインスタンスが作成され利用されるようになっていることがわかるでしょう。Appのソースコードには一切手を触れていないのに、です。
この例のように、インターフェイスを定義してその実装クラスを複数用意しておけば、単にプロパティの値を設定するだけでなく、そのプロパティの処理方法などまで自由に変更できるようになります。使うクラスやプロパティの値は、コードに一切触れることなく変更もできます。「Beanインスタンスを設定ファイルから自動生成する」というやり方の利点がわかってきたのではないでしょうか。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package com.tuyano.libro; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class SomeBean implements SampleBeanInterface { private Date date; private SimpleDateFormat format; public SomeBean() { date = Calendar.getInstance().getTime(); format = new SimpleDateFormat("yyyy/MM/dd"); } public String getMessage() { return format.format(date); } public void setMessage(String message) { try { date = format.parse(message); } catch (ParseException e) { e.printStackTrace(); date = null; } } @Override public String toString() { return "SomeBean [date=" + format.format(date) + "]"; } }
※関連コンテンツ
「初心者のためのSpring Framework入門」に戻る