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

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

Guiceを使ってみる - インターセプタの適用

Guiceから取得するインスタンスにインターセプタを適用します。これもModuleで明示します。

サービスと実装:

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

サンプル:

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

        // アスペクトの設定。
        b.bindInterceptor(
            Matchers.any(), // すべてのクラスの
            Matchers.any(), // すべてのメソッドに
            new MethodInterceptor() { 
                public Object invoke ( MethodInvocation m )
                throws Throwable {
                    try {
                        System.out.println( "meow?" );
                        return m.proceed();
                    } finally {
                        System.out.println( "meow!!" );
                    }
                }
            } );
    }
});

Kitten s = injector.getInstance(Kitten.class);
s.meow();
s.hashCode();

出力:

meow?
meow!
meow!!
meow?
meow!!

クラスの拡張にはCGLIBを利用しているようです。guice-1.0.jarにそれらしきクラスが含まれています。