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

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

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

執筆者:掌田 津耶乃

DIの仕組みと利点を考える


ここでは、まずSeasar2の「S2Container」というクラスのインスタンスを作成しています。これが、Seasar2の「DIコンテナ」です。つまり、DIを使ってオブジェクトをコンポーネントとして組み込んでおくコンテナ、というわけですね。このDIコンテナから、利用したいコンポーネントを取り出して利用すればいいわけです。

S2ContainerFactory.createを呼び出して、指定したDiconファイルを読み込んでS2ContainerFactoryインスタンスを作成します。これで、そのDiconファイルに<component>として定義してあったものが、コンポーネントとしてDIコンテナに組み込まれます。そこから、getComponentでCalcという名前のコンポーネントを取り出します。注意しておきたいのは、ここではMyCalcではなく、「CalcClass」として取り出し利用する、という点です。インターフェイスとして取り出し利用することで、このCalcClassをimplementsしたクラスであればどんなものでも利用できるようにしておくわけです。

では、このMyCalcを更に修正したMyCalc2を用意し、これを利用してみることにしましょう。ここでは、表示の形式を少し修正したものを作成してみることにします。

※改良した計算クラス――MyCalc2.java
package jp.tuyano;

public class MyCalc2 extends MyCalc {
  
  public String getResult() {
    if (this.getData().length == 0)
      return "empty.";
    int[] data = this.getData();
    String res = Integer.toString(data[0]);
    for(int i = 1;i < data.length;i++)
      res += "+" + Integer.toString(data[i]);
    int n = this.getAnswer();
    return res + " = " + Integer.toString(n) + ". ok?";
  }
}


では、このMyCalc2を利用する形でMainを実行するようにするためにはどうすればいいでしょうか。実をいえば、Mainには一切手を加える必要はありません。修正しなければいけないのは、「S2Sample.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.MyCalc2">
  </component>
</components>


diconファイルを修正するだけで、新しいMyCalc2を使って動くようになる。


どこを修正したかわかりますか?そう、<component>のclassの値をMyCalcからMyCalc2に変えただけです。これで、Mainを実行すれば、ちゃんとMyCalc2を使ってプログラムが動くようになります。

つまり、Seasar2を使うと、あるクラスを修正しても、それを利用している他のクラスは一切変更する必要がないのです。修正するのは、Diconファイル1つだけ。このファイルの設定を変えるだけで、使用するクラスがパッと変わってしまいます。もちろん、プログラムを再コンパイルする必要もまったくありません。

「ソースコードの変更も再コンパイルも不要」ということは、すなわち「既に運用されているプログラムの状態を、Diconファイルの定義を変えるだけで即座に変えることができる」ということでもあります。クラスが数百あるプログラムを修正する場面を想像してみてください。DIという考え方が、いかにすぐれたものかわかるでしょう?

プログラムというのは「完成したらその後永久にまったく変更せずに使い続ける」というものではありません。むしろ、さまざまなところで修正し追加しながら動かしていくものです。が、そうした修正のために膨大な時間と労力と、そしてシステムの停止・再ビルド・入れ替えといったリスクを負わなければならないのはかなり苦痛でしょう。DIを使えば、そうしたものを極力軽減させることができます。Seasar2ならば、それはわずか1個のXMLファイルの修正だけで済むのです。――いかがですか。今日から始めませんか、「DI生活」?
【編集部おすすめの購入サイト】
Amazonで Java 関連の書籍をチェック!楽天市場で Java 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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