前回の記事ではSpring IDE 2.0のインストールを行いました。
今回はSpring 2.0の新機能を紹介します。特に、XMLSchema(XSD)に対応した構成ファイルの記述方法を詳しく紹介していきます。
編集部注:Springについて詳しく知りたい読者は連載『Spring Frameworkで理解するDI』をご参照ください。
Spring 2.0の新機能、総まとめ
Spring Framework version 2.0(以下、Spring 2.0)は、Spring Frameworkのメジャーバージョンアップ版であり、Version 1.xとの互換性を保っています。Spring 2.0で改良された機能や追加された機能を一覧に示します。
No | 分類 | 機能 | 内容 |
---|---|---|---|
1-1 | DIコンテナの改良 | XML設定のシンプル化 | 設定ファイルにXMLSchemaを利用できる。Springが用意している定義済みのXMLSchemaネームスペースを利用することで、より簡単に設定ファイルを作成できる。また、従来のスキーマ定義方法であるDTDも改良されている |
1-2 | 新しいBeanのスコープをサポート | Web環境におけるrequestやsessionなどのスコープが追加された | |
1-3 | XML設定の拡張をサポート | XML設定ファイルを開発者が拡張できる。これによりアプリケーション開発者や、サードパーティーフレームワークの製造ベンダがXMLタグを拡張できる | |
2-1 | AOP | AOPのためのXML設定記述のシンプル化 | Aspectを簡易に定義するためのXMLSchemaネームスペースを定義している。これによりAOPの設定の可読性が向上する |
2-2 | AspectJスタイルでの記述をサポート | @AspectJアノテーションを利用することでAspectJ方式を利用できる。また、AspectJとSpringAOPでAspectを共有できる | |
3-1 | 中間層 | XML設定での宣言的トランザクション記述のシンプル化 | XMLで記述するトランザクション制御がSpring 1.2系のときよりもより簡単に利用できる。また、AspectJライブラリとともに提供することで、Springのコンテナで生成を管理していないオブジェクトに対するトランザクション制御も行える |
3-2 | JPA | JPAの抽象レイヤをサポート。JPAとはO/Rマッピングのための標準化された仕様であり、利用用途はSpringのJDBC抽象レイヤと似ている | |
3-3 | 非同期JMS | JMSを使って非同期メッセージを受け取れるようになった。JmsTemplateにカプセル化されている | |
3-4 | JDBC | いくつかの新しいクラスが追加された。例えば、NamedParameterJdbcTemplateは、名前付けされたSQLクエリーパラメータを利用可能にする。そのほかの機能もJava 5の機能を使ってより簡単に利用できるようになった | |
4-1 | Web層 | SpringMVCのためのFormタグライブラリ | JSPページを作成するのがより簡単になるJSPタグライブラリを提供している |
4-2 | 使いやすいデフォルト値 | SpringMVCでは、「設定よりも規約を」というテーマを取り入れた。これによりControllerやViewに規約に従った名前を付けることでXMLの記述量を大幅に削減できるようになった | |
4-3 | Portletフレームワーク | Portletフレームワークをサポートした。PortletはSpringMVCフレームワークと同じ用途で利用するフレームワークである | |
5-1 | そのほか | 動的言語サポート | Javaではない言語で書かれたBeanをサポートするようになった。対象となるのは、動的言語のJRubyやGroovy、BeanShellなど |
5-2 | JMX | MBeanサーバに登録されたMBeanを実行できる | |
5-3 | タスクスケジュール | 抽象化したタスクスケジュール機能を提供するようになった | |
5-4 | Java 5サポート | Java 5の機能を利用して以下の機能を提供するようになった ・@Transactional ・@Required ・SimpleJdbcTemplate ・JPA ・@AspectJ ・SpringとAspectJによるドメインオブジェクトへのインジェクション |
|
表1 Spring 2.0の新機能 |
さらに詳細な情報は、Spring Frameworkドキュメント(英語)を参照してください。
Spring 2.0の目玉! DIコンテナの改良
Spring 2.0の改良の中でも目玉というべき改良は、XML構成ファイルにXMLSchema(以下、XSD)ベースのスキーマ定義を利用できるようになったことです。「スキーマ定義」とは、XMLのデータ構造の定義のことです。
XSDのほかのXMLのためのスキーマ定義の仕様として代表的なものにはDTD(Document Type Definition)があります。つまり、XSDはDTDの代わりになるものだといえます。さらに、DTDと比較してXSDはさまざまな機能を持っています。
DTDではなくXSDを使うメリット
例えば、XSDはDTDと比べて以下のようなメリットを持っています。
- 書式がXMLに完全に対応しているしている
- プログラミング言語やDBで使用されている標準的なデータ型(date型、integer型など)の多くが利用可能であり、データ型を新たに定義できる
- XMLパーサでデータ型の検証ができる。アプリケーションがXMLを読み取る際に、容易にデータ型の検証ができる
- データ型に名前を付けて、モジュール化して再利用可能
XSDを使う最大のメリット、“ネームスペース”とは?
中でもSpringFrameworkにおいてXSDが採用されたことによる最大のメリットの1つは「XSDの“ネームスペース”という仕組みによってモジュール化されたタグの定義を組み込むことができるようになった」ことだといえます。
ネームスペースにあらかじめ定義された「略式のタグ記述」を利用できるようになったことで構成ファイルの記述が容易になりました。
Spring 2.0は、1.xに続いてDTDも使える
XSDベースの構成ファイルは明らかに開発効率を向上できる機能なので利用が推奨されていますが、何らかの理由によりXSDを利用できない場合は、DTDを引き続き利用することになります。
そして、Spring 2.0では、DTDについても改良を行っています。改良されたDTDを利用する場合、Spring 1.x時代に作成した構成ファイルのDOCTYPEの宣言をspring-beans-2.0.dtdに変えることで利用できます。
次ページでは、Spring IDE 2.0でのXSDファイルの作り方やXSDネームスペース一覧などについて解説します。
Copyright © ITmedia, Inc. All Rights Reserved.