goo blog サービス終了のお知らせ 

プログラマのひとりごと

コンピュータ技術一般について扱います

google guice

2016-05-28 09:18:23 | 日記

今日はgoogle guiceについて

googleが提供する軽量DIコンテナで、設定ファイルを使わないでDIを実現している。
設定ファイルを使わないなら何を使っているのというと、アノテーションを使用している。
だから、JAVAコードのみでDIを実現できるとうわけだ。

重装複雑なEJBコンテナに比べて、導入しやすくて、簡単にコードが組めるのが特徴だ。

アノテーションでDI指定するので、クラス単位、メソッド単位、フィールド単位にDI指定することができる。
インジェクションの範囲(スコープ)を簡単に設定することができるのだ。

インジェクション対象はインタフェースやクラスとなる。


例えば、以下ににみたいに指定する。

import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;

class guiceSample {

      @Injection //ここが指定するアノテーション
      private SayHello sayHello; //sayHelloにSayHelloクラスインスタンスを注入する!!

      public static void main(String[] args) {
           Injector injector = Guice.createInjector(new AbstractModule() {
               @Override protected void configure() { //ここに注入対象と注入するクラスを指定。今回は不要// }
           });

          GuiceMain gm = injector.getInstance(GuiceMain.class);
          gm.sayHello.say();
      }

}

上記の例では、injector.getInstanceで取得したGuiceMainクラスのオブジェクトフィールド”sayHello”に

SayHelloクラスインスタンスが注入されるということ。

例えばSayHello はこんなクラスだったら"hello hello"と出力される。

class SayHello {

      say(){

          System.out.println("hello hello");    

      }

}

これは一般的な使い方ではなく、あくまでもGoogle Guiceを勉強するための基礎でしかない。

次回は、インターフェースに注入する方法を学ぼうっと。

 


コメントを投稿