Spring Framework 入門記 Beanその11 XmlBeanFactory
本来なら次は「3.7. Lifecycle of a bean in the BeanFactory」のはずだったのですが,つい最近になって
This chapter will be re-written soon.
となってしまいました.(^^;
RC2のドキュメントには状態遷移図付きの解説があったのですが,それほどの内容ではないので飛ばしましょう.
ということで次は「3.8. BeanFactory structure and implementations (WIP)」.ここを読めばBeanFactory
の階層化について理解できるのかな,と思いきや,
From here on, up till the Context stuff, needs an overhaul.
とか書いてあるし...(^^;
ま,開発中なんだからこんなものですよね.っていうか,これだけドキュメントがあるって異常なくらいです.「全体の繁栄のために」ドキュメントを書いてくださったSpring Frameworkのスタッフに感謝です.おかげさまで最高の日記ネタにしています.
現状で書いてあることは,いつも使っているコンテナXmlBeanFacotry
を構成するためのXMLについて,ここまで説明がなかった<props>
,<list>
,<map>
を含めて解説されています.でも<set>
は書いてありません.なぜ? それに,<props>
と<map>
はもう使っちゃったんだよなぁ.
Beanのプロパティに他のBeanの参照を設定したりするための<ref>
要素の説明では,bean
属性およびlocal
属性の他にexternal
属性を指定できると書かれています.しかし,DTDではそのような属性は宣言されていません.説明には,参照しようとしているXML(BeanFactory
)ではなく,外部からBeanを探すことを明示するそうです.必要なのかなぁ?
このまま終わるのも何なので,とりあえず<list>
要素だけでも使ってみましょう.
まずはjava.util.List
のプロパティを持つクラスを用意します(ソースは省略).
そして定義ファイルを作成します(<bean>
要素のみ抜粋).
<bean id="foo" class="study.Foo" singleton="false"> <property name="list"> <list> <value>Yuri</value> <value>Yuu</value> <value>Moe</value> <value>Izumi</value> </list> </property> </bean>
<list>
要素の内容には,<value>
要素だけでなく,<ref>
要素などはもちろん,<props>
,<list>
,<map>
を記述することもできます.リストのリストとか作れるわけですね.
これを以前より使用しているMainクラス(「入門記 Bean その8」の終わりの方参照)で実行すると,
- Loading XML bean definitions from (no description) foo : study.Foo@12940b3 list=[Yuri, Yuu, Moe, Izumi] class=class study.Foo
となりました.バッチリです.
なお,List
の実装クラスはjava.util.ArrayList
でした.これはカスタマイズできないのかな? DTDには属性などはありませんから,現状ではどうしようもなさそうです.ちなみにMap
の実装クラスはjava.util.HashMap
です.
どうやら,Spring FrameworkのBeansパッケージの基本的なところはだいたいクリアできたようで,次の「3.9. Introduction to the ApplicationContext」からはContextパッケージになるようです.順調,順調.このドキュメントの目次を見るとまだまだ先は長いのですけどね... でも,日記のために頑張るのだぁ.