その2 Seasar2 基本動作編
ページ 目次
- 基本の流れ
1.基本の流れ
その1 DIの概要を学ぶ Seasar2を使用してのサンプルではSeasar2の基本動作を見てみました。
ここで紹介するのはSeasarの使い方の一つのパターンでしかありません。
他にもいろいろな使い方がありますので、案の一つとして見てください。
以下のソースはサンプルの際のメインクラスです。
package sample.seasar2; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; /** * Seasar2 のサンプルのメインクラス. */ public class Seasar2SampleMain { // 設定ファイルのPath private static final String PATH = "sample/seasar2/sample.dicon"; /** * Seasar2 のサンプルのメインメソッド * @param args 引数 * */ public static void main(String[] args) { // 設定ファイルを読み込む. SingletonS2ContainerFactory.setConfigPath(PATH); // 初期化する. SingletonS2ContainerFactory.init(); // コンテナを取得する. S2Container container = SingletonS2ContainerFactory.getContainer(); // コンポーネントを呼び出す. Seasar2ServiceSample s2ss = (Seasar2ServiceSample) container.getComponent(Seasar2ServiceSample.class); // 処理を実行する. s2ss.serviceSample(); // 使用したコンポーネントを廃棄する. container.destroy(); } }
設定ファイルを読み込む.
SingletonS2ContainerFactory.setConfigPath(PATH);
SingletonS2ContainerFactoryの中のconfigPathに対して設定を行っています。
またconfigPathにはデフォルトで"app.dicon"が設定されています。
前回のサンプルでは設定ファイルにコンポーネントを一つだけ設定するだったので、
<component name="Seasar2ServiceSample" class="sample.seasar2.Seasar2ServiceSampleImpl"/>
と記載しました。
ただ一つのコンポーネントで終わるわけもないので、次は複数のコンポーネントを登録してみたいと思います。
追加・修正するファイルは以下のようになります。
パッケージ名 | クラス名 | 説明 |
---|---|---|
sample.seasar2 | Seasar2ServiceSample2 | 追加するコンポーネントのインターフェース・新規追加 |
sample.seasar2 | Seasar2ServiceSample2Impl | 追加するコンポーネントの実装クラス・新規追加 |
sample.seasar2 | Seasar2SampleMain | Seasar2 のサンプルのメインクラス・修正 |
sample.seasar2 | sample.dicon | Seasar2にて使用する設定ファイル・修正 |
作成する内容は以下のようになります。
Seasar2ServiceSample2.java
package sample.seasar2; /** * 追加するコンポーネントのインターフェース. */ public interface Seasar2ServiceSample2 { /** * サンプルサービス2. * */ public void serviceSample2(); }
Seasar2ServiceSample2Impl.java
package sample.seasar2; /** * 追加するコンポーネントの実装クラス. */ public class Seasar2ServiceSample2Impl implements Seasar2ServiceSample2 { /** * サンプルサービス2. * */ public void serviceSample2() { System.out.println("サンプルサービス2.の実装クラスを処理しました"); } }
次に、追加したコンポーネントを呼び出すためにメインクラスを修正します。 追加する内容は以下のようになります。
// コンポーネント2を呼び出す Seasar2ServiceSample2 s2ss2 = (Seasar2ServiceSample2) container.getComponent(Seasar2ServiceSample2.class); // コンポーネント2の処理を実行する。 s2ss2.serviceSample2();
追加後のSeasar2SampleMainクラスは以下のようになります。
Seasar2SampleMain.java
package sample.seasar2; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; /** * Seasar2 のサンプルのメインクラス. */ public class Seasar2SampleMain { // 設定ファイルのPath private static final String PATH = "sample/seasar2/sample.dicon"; /** * Seasar2 のサンプルのメインメソッド * @param args 引数 * */ public static void main(String[] args) { // 設定ファイルを読み込む. SingletonS2ContainerFactory.setConfigPath(PATH); // 初期化する. SingletonS2ContainerFactory.init(); // コンテナを取得する. S2Container container = SingletonS2ContainerFactory.getContainer(); // コンポーネントを呼び出す. Seasar2ServiceSample s2ss = (Seasar2ServiceSample) container.getComponent(Seasar2ServiceSample.class); // 処理を実行する. s2ss.serviceSample(); // コンポーネント2を呼び出す Seasar2ServiceSample2 s2ss2 = (Seasar2ServiceSample2) container.getComponent(Seasar2ServiceSample2.class); // コンポーネント2の処理を実行する。 s2ss2.serviceSample2(); // 使用したコンポーネントを廃棄する. container.destroy(); } }
次に設定ファイルであるsample.diconに作成したコンポーネントの情報を登録します。 設定する情報は以下のようになります。
<component name="Seasar2ServiceSample2" class="sample.seasar2.Seasar2ServiceSample2Impl"/>
追加後のsample.diconは以下のようになります。
sample.dicon
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <component name="Seasar2ServiceSample" class="sample.seasar2.Seasar2ServiceSampleImpl"/> <component name="Seasar2ServiceSample2" class="sample.seasar2.Seasar2ServiceSample2Impl"/> </components>
正しくコンポーネントが追加されたか、実行して確認してみます。
DEBUG S2Containerを作成します。path=sample/seasar2/sample.dicon DEBUG S2Containerを作成しました。path=sample/seasar2/sample.dicon INFO Running on [ENV]product, [DEPLOY MODE]Normal Mode サンプルクラスの作業を実行します. サンプルサービス2.の実装クラスを処理しました
正常に追加したコンポーネントが認識され、実行されました。
ただ毎回コンポーネントを追加するたびに設定ファイルを記載するのは、とても大変な作業です。
そこで次の項では、コンポーネントを自動認識するための設定ファイルの書き方を記載したいと思います。
Seasar2 Topに戻る