無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Guiceを使ってみる。

Guiceを使ってみます。

単純なサンプル

DIコンテナからサービスのインスタンスを取得するだけの単純なサンプルです。インジェクションなし。

Injector
DIコンテナに該当。サービスの実装はここから取得します。
Module
DICONファイルに該当。サービスと実装の関連づけをJavaのコードで記述します。また、Guiceではアノテーションを利用して設定を行う方法もサポートされています。
public static void main( String[] args ) throws Exception {

    // インジェクターを作る。
    // 引数で渡すModuleでサービスと実装の関連づけを指定する。
    Injector injector = Guice.createInjector( new Module() {
        public void configure ( Binder b ) {
            // Kittenの実装として、KittenImplを関連づける。
            b.bind( Kitten.class ).to( KittenImpl.class );
        }
    });

    // インジェクターからKittenの実装を取得
    Kitten s = injector.getInstance(Kitten.class);
    s.meow();
}

/**
 * サービスのインターフェイス
 */
static interface Kitten {
    void meow ();
}
/**
 * サービスの実装
 */
static class KittenImpl implements Kitten {
    public void meow () {
        System.out.println( "meow!" );
    }
}

出力:

meow!

インジェクション

インジェクションするには、インジェクション先にアノテーションを付加します。

public static void main( String[] args ) throws Exception {

    Injector injector = Guice.createInjector( new Module() {
        public void configure ( Binder b ) {
            b.bind( Kitten.class ).to( KittenImpl.class );
            b.bind( Cat.class ).to( CatImpl.class );
        }
    });

    // インジェクターからCatの実装を取得して実行
    Cat cat = injector.getInstance(Cat.class);
    cat.meow();
}
/**
 * 注入先のインターフェイス
 */
static interface Cat {
    void meow ();
}
/**
 * 注入先の実装
 */
static class CatImpl implements Cat {
    private Kitten kitten;

    @Inject // インジェクション先にアノテーションを追加。
    void setKitten( Kitten kitten ) {
        this.kitten = kitten;
    }

    public void meow () {
        this.kitten.meow();
    }
}
/**
 * サービスのインターフェイス
 */
static interface Kitten {
    void meow ();
}
/**
 * サービスの実装
 */
static class KittenImpl implements Kitten {
    public void meow () {
        System.out.println( "meow!" );
    }
}

出力:

meow!


参考: Java on Guice Guice 1.0 User's Guide
Kazuhiro's Weblog-「Guice」 −Google発のJava用DIコンテナ− を使ってみる