Javaプログラミング/Javaプログラミング関連情報

SeasarでDI体験!(4ページ目)

日本が誇る純国産先端技術「Seasar」を知っていますか? 今、話題のDI(Dependency Injection)がどんなものか、Seasarで体験してみましょう。

執筆者:掌田 津耶乃

DIでクラスを利用する


では、先ほどのプログラムをSeasar2を利用した形で作ってみることにしましょう。まずは、MyCalcの機能を定義するインターフェイスから作成をします。

※計算クラスのインターフェイス――CalcClass.java
package jp.tuyano;

public interface CalcClass {
  public void setData(int[] data);
  public int[] getData();
  public int getAnswer();
  public String getResult();
}


ここでは、必要なメソッドを一通り定義しておきました。これをimplementsする形で、MyCalcを作成します。これは、クラスの定義部分をこのように修正するだけです。

public class MyCalc implements CalcClass {・・・略・・・}


これで、MyCalcはCalcClassを実装した形になります。使用するメソッドなどはもともとMyCalcにあったものとCalcClassに定義したものはまったく同じですから、修正の必要はありませんね。

では、このMyCalcを他のクラスから利用できるようにするために、Daiconファイルを作成しましょう。これは、Seasar2を使ってクラスを作成し利用できるようにするために必要な設定ファイルです。ここでは、MyCalcと同じjp.tuyanoパッケージ内に「S2Sample.dicon」というファイル名でDiconファイルを作成することにしましょう。

※Diconファイル――S2Sample.dicon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN"
  "http://www.seasar.org/dtd/components23.dtd">
<components>
  <component name="Calc" class="jp.tuyano.MyCalc">
  </component>
</components>


ここでは、<components>というルートタグの中に、<component>というタグで使用するクラスを定義しています。このタグでは、nameという属性で名前を、classという属性で使用するクラスをそれぞれ指定しています。これで、jp.tuyano.MyCalcというクラスがCalcという名前で利用可能になります。

では、Mainクラスを修正しましょう。ここでは、直接MyCalcを利用するのでなく、Seasar2からオブジェクトをもらって利用する形になります。

※アプリケーションクラス――Main.java
package jp.tuyano;

import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;

public class Main {
  
  public static void main(String[] args) {
    int[] data = new int[args.length];
    for(int i = 0;i < data.length;i++){
      try {
        data[i] = Integer.parseInt(args[i]);
      } catch (NumberFormatException e) {
        data[i] = 0;
      }
    }
    S2Container container =
        S2ContainerFactory.create("jp/tuyano/S2Sample.dicon");
    container.init();
    CalcClass calc =
        (CalcClass)container.getComponent("Calc");
    calc.setData(data);
    System.out.println(calc.getResult());
  }
}


Seasar2を使ったプログラム。Log4jが組み込まれているためデバッグ情報も出力されるが、計算結果はちゃんと表示されるのがわかる。


これでプログラムは完成しました。Mainを実行してMyCalcがちゃんと機能しているか確かめてみてください。先ほどのプログラムと同じように計算結果が出力されれば、Seasar2を利用してきちんとMyCalcが利用できていることが確認できます。


  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます