|
||||||||||||
| 1 2 3 4 次のページ | ||||||||||||
| サンプルを用いたSeasar2によるAADL3への道 | ||||||||||||
|
前回は、Seasar2とSpringについての概要、ならびに各ソフトウェアの導入について説明しました。 今回は、本連載の第1回に引き続きインターフェースベースの設計についてSeasar2を例にして解説します。 それでは、第1回の最後に出てきた従業員管理WebアプリケーションにSeasar2を導入したもの(本連載の第2回でインストールした従業員管理Webアプリケーション。以下、サンプルと記述)を見てみましょう。Seasar2の定義ファイルについての詳細な解説は後ほど行います。 |
||||||||||||
| インターフェースベース設計 | ||||||||||||
|
サンプルコードではSeasar2を導入することによって、DIを利用する際にEmployeeManagerImplがEmployeeDaoインターフェースの実装を知らなくても済むようにしています。また、EmployeeManagerImplで明示的にコーディングしていたトランザクション管理(commitやrollback)をSeasar2の管理下に移すことで、宣言的なトランザクションを実現しています。 ではそれぞれの定義ファイルとEmployeeManagerImplを順に見ていきましょう。 まず、はじめにインターフェースベース設計を実現するための定義ファイル"employee.dicon"に、EmployeeManagerインターフェースを実装するEmployeeManagerImplとEmployeeDaoインターフェースを実装するEmployeeS2Daoが定義されています(リスト1)。両者の間の依存関係は記述されていませんが、これはSeasar2の自動バインディング機能を使用しているためです。 リスト1:コンポーネント定義(employee.dicon) |
||||||||||||
<component class="jp.co.thinkit.employee.dataaccess.s2dao.EmployeeS2Dao">
|
||||||||||||
|
これに合わせEmployeeManagerImplでは、EmployeeDaoImplのインスタンスを作成している部分を削除し、Seasar2のセッタインジェクションを利用するためにEmployeeDaoインターフェースを格納するプロパティとセッタメソッドが追加されています(リスト2)。 リスト2:EmployeeManagerImplクラスの変更 |
||||||||||||
public class EmployeeManagerImpl implements EmployeeManager {
|
||||||||||||
|
インターフェースベース設計をWebアプリケーションで実現するためには、"web.xml"にS2Containerを生成するクラスを設定する必要があります。今回はS2Strutsも使用しますので、Struts関連の定義も必要になります。リスト3は、"web.xml"の設定例の抜粋で、リスト4は"struts-config.xml"の定義例です。 この設定によりWebアプリケーション起動時にSeasar2がオブジェクトの関連づけを行います。また起動したSeasar2はオブジェクトの関連づけをしてくれます。 サンプルでは起動したSeasar2が定義ファイルを参照し、EmployeemanagerImplのセッタメソッドを利用してEmployeeDaoの実装クラスを設定してくれます。この機能により、Seasar2上で動作するPOJO(EmployeeManagerImpl)はインターフェース(EmployeeDao)の実装クラスを取得するためにSeasar2を意識する必要がないのです。 リスト3:web.xmlの設定例 |
||||||||||||
<servlet>
|
||||||||||||
|
リスト4:Strutsの設定 |
||||||||||||
<!-- ========== Controller Configuration (S2Struts)================= -->
|
||||||||||||
|
ここまでが、Seasar2を利用したインターフェースベース設計になります。 EmployeeManagerImplがEmployeeDaoインターフェースの実装を意識する必要がないこと、Seasar2上のPOJOがSeasar2を意識する必要がないことが理解していただけたかと思います。 |
||||||||||||
|
1 2 3 4 次のページ |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


