インストール

最初に、サンプルアプリをインストールしますが、下記の環境が必要ですので、準備してください。

  • Maven 2.0.x 系
  • JDK5 以上
  • Tomcat 5.0以上

プロジェクトのダウンロード

maven2のプロジェクト 2本をダウンロードしてください。

コンパイルと、Tomcatへの配備

コンパイルは、maven2 を使って簡単に完了します。

  • com-jxpath-commons1.1 を 「mvn install」
  • SpringWeb を 「mvn package」

次に、SpringWeb の targetフォルダにできた SpringWeb.war を、TomcatのWebAppsフォルダに コピーし、Tomcatを起動します。

サンプルを動かしてみよう

ブラウザで、http://localhost:8080/SpringWeb/ を開くと、下記の画面が表示されます。

「アカウントに「jxpath」、パスワードに「com」と入力し、「送信」ボタンを押してください。
すると、ログインに成功し、下記の画面に切り替わります。

今回提供するソースの機能はこれだけです。「え、これだけ?」と思われた方も多いかと思います。
ご安心ください。これだけの動作の中に、Springの機能が実は大量に盛り込まれています。
詳しくは、来週から、約4週間にわたって紹介していきます。

ちょっとだけDIコンテナの雰囲気

DIコンテナの真髄、再コンパイルなしで、モジュールを取り替えるという例を示します。
サンプルソースは、ログインユーザを「jxpath/com」の1名決めうちで、ログイン判定しています。

これを、「suzuki/ichiro」「matsui/hideki」「matsuzaka/daisuke」の3人に変更します。

  1. tomcatを止めます
  2. tomcatの webapps\SpringWeb\WEB-INF\SpringWeb-servlet.xmlの26行目を変更します。
    変更前「<property name="loginLogic"><ref bean="loginLogicDummy"/></property>」
    変更後「<property name="loginLogic"><ref bean="loginLogicMap"/><property>」
  3. tomcatを起動します

どうですか、「jxpath/com」ではログインできなくなり、
「suzuki/ichiro」「matsui/hideki」「matsuzaka/daisuke」でログインできるようになったはずです。

DIコンテナの利用価値

どんなカラクリなのかは、来週以降記述するとして、「DIコンテナ」を使うと何が便利なのか、
いまの一例でイメージできますでしょうか。

上の例のように、開発の最初は決めうちのダミーモジュール( スタブというやつですね )を部品として
使っておいて、徐々に部品を完動品に入れ替えていくという開発スタイルは、今後ますます増えると思います。

そのときに、ソース中で new するクラス名を書き直して、コンパイルすると以下のような2つの問題が
考えられます。

  • ソース編集ミスで、コンパイルエラーが起こる
  • 現在のバイナリが、どのスタブと、どの完動品の組み合わせか、ソースを見ないと分からない

サンプルのログイン判定ロジックでは、決めうち判定のスタブと、3名のデータ判定を行う半完動品の
モジュールを、「ソースをコンパイルせず」「一箇所の設定ファイルにテキストで」変更を行いました。
さらに発展させて、、ログイン判定部を本格的にデータベースを参照するものに取り替えることも、簡単にできます
(注: データベース連携のコーディングが簡単なのではなく、モジュールの入れ替えが簡単という意味)

このDIコンテナの機能ですが、システムの開発メンバが増えれば増えるほど、またシステムの
保守・メンテナンス期間が増えるとほど、だんだん価値が分かってくるのですが、
管理人は「噛めば噛むほど味がでるスルメのようなもの」と感じています。
では、続きは次週に。