2009-07-02 15 views
2

私は次のように@Injectと@SingletonプロパティでGoogle Guiceのを使用しようとしている:Guiceの構成エラー

私が持っている:

  1. モジュール空configure()方法で。
  2. インターフェイスIFoo
  3. @ Iningleで注釈が付けられたパラメータのないコンストラクタを使用して、@ Singletonで注釈付けされたクラスFoo(IFoo実装)。これは、単一の注釈付きコンストラクタです。

クラス、コンストラクタおよびインタフェースが公開され、そしてまだ私は次のエラーを取得しています:

No implementation for IFoo was bound.

答えて

5

あなたがこれを行うときにエラーが出る意味ですか?

IFoo foo = injector.getInstance(IFoo.class); 

これは明らかです。 configure()が空の場合、gu35はIFooの依存関係を満たすクラスを知っているはずです。

これをconfigure()メソッドに追加するだけで効果があります。今、guiceは依存関係を満たすクラスを知っています。

bind(IFoo.class).to(Foo.class); 

あなたがインターフェイスに注釈を付けることができますモジュールでこれを設定しない場合。例えば

@ImplementedBy(Foo.class) 
public interface IFoo { 
    ... 
} 

@Singleton注釈

のみ毎回クラスの要求が代わりに毎回新しいインスタンスを作成する Injector.getInstance()を介して形成されているクラス(シングルトンパターン)のための同じインスタンスを返すようにGuiceのに指示します。ただし、これはクラスローダーごとではなく、インジェクターごとのシングルトンのみであることに注意してください。

+1

Barの@Singleton注釈は、GuarがIBarの具体的な実装であると伝えていませんか? 私は大きなModule()を持っていません - 私はクラスに注釈を付けることを好みます。どのようにしてGuistとそれを達成するのですか? – ripper234

+2

Answer – jitter

+1

ありがとう、それは私が必要なものです。 – ripper234

関連する問題