Guice(ジュースと読む)は,
DIとは依存性の注入(Dependency Injection)のことで,
DIフレームワークは,
Guiceのダウンロード
Guiceのバイナリモジュールはguice-1.
ソースコードは,
それでは,
基礎編
ここでは基礎編として,
DIの設定
GuiceによるDIの設定は以下の手順で行います。これらは他のDIフレームワークとほぼ同様で,
- 1) インターフェースを作成する
- 2) 具象クラス(依存性のもと)を作成する
- 3) 1)と2)とを対応させる(DIの設定をする)モジュールを作成する
- 4) 2)を実行するためのクラスを作成する
1) インターフェースを作成する
まず,
リスト1 インターフェースの作成
public interface Play {
// メソッドの中身は具象クラスで実装する
void play();
}
2) 具象クラス(依存性のもと)を作成する
1)で作成したインターフェースを実装した具象クラスを作成します(リスト2-1)。DIフレームワークでは,
なお,
リスト2-1 1)のインターフェースを実装した具象クラス
// 設定時に参照できるようにstaticにしている
static class PlayImpl implements Play {
// 実装されたメソッド
public void play() {
System.out.println( "何かしてあそぶ!" );
}<
}
リスト2-2 別の具象クラスの例(1)
static class Baseball implements Play
public void play() {
System.out.println( "野球してあそぶ!" );
}
}
リスト2-3 別の具象クラスの例(2)
static class Soccer implements Play {
public void play() {
System.out.println( "サッカーしてあそぶ!" );
}
}
3) 1)と2)とを対応させる(DIの設定をする)モジュールを作成する
1)で作成したインターフェースと,
Guiceでは,
リスト3 インターフェースと具象クラスとを対応させるモジュール
class PlayModule extends AbstractModule {
protected void configure()
// PlayImplクラスを対応させる(この場合はSingletonとする)
bind( Play.class ).to( PlayImpl.class ).in( Scopes.SINGLETON );
// 別の具象クラスを対応させる場合(例)
// bind( Play.class ).to( Baseball.class ).in( Scopes.SINGLETON );
// bind( Play.class ).to( Soccer.class ).in( Scopes.SINGLETON );
}
}