Guice 1.0 User's Guide和訳 その1

はじめに


目次 | 次へ

Java on Guice

Guice 1.0 User's Guide

Guice(ジュースと発音します)はとても軽量で、Java5以降で動作する次世代のDIコンテナです。

Introduction - はじめに

エンタープライズJavaコミュニティーは、オブジェクト間の依存性を解決するために大変な労力を費やしています。Webアプリケーションでは、どのようにして中間層のサービスや、ログインユーザに対するサービスや、トランザクションマネージャーを取得すれば良いのでしょう?一般的な手法、特殊な手法を含め、多くの方法が存在すると思います。何かしらのデザインパターンを使う人も入れば、何かしらのフレームワークを使う人もいるでしょう。それらは全て、なるべくテスト容易性を確保したり、お決まりのコードの記述量を減らそうとした結果生み出されたものです。あなたはすぐに、これらの様々な手法の中でもGuiceが最善の選択肢であると思うようになるでしょう。Guiceはとてもテストが容易で、柔軟で保守性の高いアプリケーションを作成することが可能であり、お決まりのコードの記述量も少なくてすみます。

Guiceが一般的によく用いられている古典的な手法よりも優れていることを説明するために、非現実的だけど簡単な例を用いてみます。以下の例は、実際にはGuiceを使う程のことも無い簡単な例ですが、Guiceの良さをよく表しています。アプリケーションが大きく複雑になればなるほど、Guiceはその威力を発揮するでしょう。

この例では、あるクライアントはあるサービスのインターフェースに依存しています。このサービスは適当な任意のサービスなので、ここでは単に「サービス」とだけ呼ぶことにします。

public interface Service {
  void go();
}

サービスには通常、デフォルトの実装クラスが存在します。クライアントは通常、実装クラスには直接依存すべきではありません。将来実装クラスを変更することになった場合、全てのクライアントを修正して回るのは大変だからです。

public class ServiceImpl implements Service {
  public void go() {
    ...
  }
}

この例ではさらに、テストで使用するためのモックのサービス実装も存在するものとします。

public class MockService implements Service {

  private boolean gone = false;

  public void go() {
    gone = true;
  }

  public boolean isGone() {
    return gone;
  }
}