定数を扱う<util:constant/>
utilネームスペースの<util:constant />タグは、構成ファイルの中で定数を扱うために利用するタグです。
このタグを使う場合の構成ファイルへの記述量を、以前より利用されているDTDを使った場合と、新しいXSDを使った場合の2つの方法で比較してみましょう。以下のリスト3はDTDを使った定数の利用サンプルであり、次のリスト4はXSDのutilネームスペースに含まれるutil:constantタグを利用して同じ内容を省略記述したサンプルです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以前のDTDを使った定数読み込みでは、上記(リスト3)のようにFieldRetrievingFactoryBeanクラスを完全修飾名で記述する必要がありました。定数を扱う記述であることも読み取りにくいと感じられます。次にXSDを使うサンプルをリスト4で見ていきましょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記のリスト4では、定数を参照していることが一目瞭然であり、記述もコンパクトです。定数の参照は頻繁に発生する記述であり、コンパクトに記述できることで可読性と生産性の両面でメリットがあります。
定義済みBeanプロパティーへの参照を定義<util:property-path/>
utilネームスペースに含まれる<util:property-path/>タグは、定義済みのBean定義のプロパティーを別のBean定義から参照するためのタグです。このタグの効果を見るために、まず参照先のBeanとしてリスト5を定義します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記のBean定義(リスト5)の中のmessageというname属性を別のBean定義から参照する場合、以前のDTDでは以下のように、Springが提供するPropertyPathFactoryBeanを使って記述する必要がありました。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
XSDを利用する場合は、以下のような記述になります。path属性には、「beanName.beanProperty」という記述書式を使って参照先のプロパティーを記述します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この例でも記述量が少なくなり、可読性が向上していることが分かります。
プロパティーから値を取得する<util:properties/>
<util:properties/>タグはプロパティーファイルを読み込むためのタグです。以前のDTDの設定では、SpringのPropertiesFactoryBeanを使って設定を取得します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
XSDを使って上記と同様の結果を得るためには、以下のように記述します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
コレクションを簡単に利用する<util:list/>
XSDを使ったSpring 2.0の構成ファイルで、コレクションオブジェクトのインスタンスを定義する場合には、「<util:list/>」「<util:map/>」「<util:set/>」のタグが便利です。これらのタグを使うことで、コレクション型のBean定義を容易に作成できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、リストインターフェイスの具象クラスとして明示的に実装クラスを指定したい場合は、「list-class」属性を利用します。
例えば、java.util.LinkedListをインスタンス化したい場合は以下のように記述します。「list-class」を指定しない場合は、コンテナ(Spring Framework)がインスタンス化するクラスを自動的に選択します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
DTDによる設定では、以下(リスト12)のようにSpringのListFactoryBeanを利用していました。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
コレクションを簡単に利用する<util:set/>と<util:map/>
setやmapを扱うための<util:set/>タグや<util:map/>タグも、前述の<util:list/>タグとよく似ています。
<util:set/>タグは、<util:list/>タグとほとんど同じように利用できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
<util:map/>タグではキーと値のセットを保持するためentryタグを子要素として利用します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
AOPやBeanスコープにも新機能が!
今回はSpring 2.0の新機能の概要を説明し、それら新機能の中でも最も際立った変更である「XSDによる構成ファイル定義の記述方法」を紹介しました。これらの新機能はSpring 2.0での開発スタイルに大きな影響を与えることでしょう。
次回は<aop:〜/>タグを使ったSpringAOPの利用方法と、新規追加されたBeanスコープ(session、request)の使い方についてサンプルを交えて解説します。
@IT関連記事
DIとAOPがサーバ・コンポーネント技術を変える
J2EE Watch(7) EJBのような重量級のコンテナに対するアンチテーゼとして登場したDI。いまやDI+AOPは、J2EEの未来にも影響を与える存在となりつつある
「Java Solution」フォーラム 2005/6/17
Spring Frameworkで理解するDI
最近よく耳にする「DI」は、オブジェクトの再利用性を高めるとして注目される新しい考え方だ。このDIをSpringを使いながら理解する
第1回 DI:依存性の注入とは何か?(2005/4/29)
第2回 Springフレームワークの設計思想とAOP(2005/11/23)
第3回 AOPサンプルアプリで理解するAOP(2005/12/3)
第4回 なぜDIコンテナを使うのか(2006/8/10)
連載各回の解説はこちら
Java EE 5マイグレーションプラクティス
「Java EE 5」の登場は近い。マイグレーションの近道は、実はJSF、Spring、Hibernateを使い、理解するところにある
第1回 JSF・Spring・Hibernateで次世代Javaに備える(2005/7/6)
第2回 鍵はPOJOベースのアプリケーション・デザイン(2005/7/23)
第3回 JSFベースのプレゼンテーション・デザインを考える(2005/8/27)
第4回 擬似EJB3.0環境をSpringとXDocletで作る(2005/10/20)
第5回 Sインテグレーション層のDAOデザインを考える(2006/1/6)
連載各回の解説はこちら
Seasar Projectの全貌を探る
国産オープンソースプロダクトのコミュニティとして急成長するSeasar2。大手SIerもサポートを表明したJ2EEプロダクトの全貌を探る
第1回 次世代J2EEを目指すSeasar2はどう誕生したか(2005/6/9)
第2回 DI+AOPを実現するSeasar V2(2005/7/16)
第3回 SeasarV2によるDBアクセス機能(2005/9/3)
第4回 SeasarV2によるテスト機能(2005/10/1)
第5回 SeasarのO/RマッピングツールS2Dao(2005/12/23)
第6回 SeasarのDBアクセスにHibernateを使う (2006/1/19)
連載各回の解説はこちら
アスペクト指向プログラミング オーバービュー
The Rational Edge(24) IT業界はソフトウェア構築アプローチの改良の歴史でもある。このラインアップに最近加わったのが、アスペクト指向プログラミングだ
情報マネジメント > アーキテクチャ 2004/4/13
アスペクト指向のバリエーション解説
この連載では「アスペクト指向とは何か?」というところから始め、AspectJやJBossAOPなどを用いたAOPの実装を紹介していく
第1回 アスペクト指向の基礎とさまざまな実装
第2回 AspectJから学ぶアスペクト指向の理解
第3回 JBoss AOPとAOPフレームワークの役目
第4回 「AspectWerkz」の利用法
第5回 アスペクト指向理解のまとめ
情報マネジメント > アーキテクチャ
Copyright © ITmedia, Inc. All Rights Reserved.