2009-07-02 88 views
2

我嘗試使用谷歌吉斯與@注入和@Singleton性能如下:吉斯配置錯誤

我:

  1. 模塊與空configure()方法。
  2. 接口IFoo
  3. 一個類Foo(實現IFoo),用@Singleton註解,帶有@Inject註釋的無參數構造函數。這是單註釋的構造函數。

的類,構造函數和接口是公開的,而且我依然收到以下錯誤:

No implementation for IFoo was bound.

回答

5

你的意思是你這樣做的時候錯誤?

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

那麼很明顯。如果configure()爲空,那麼guice應該知道什麼類可以滿足IFoo的依賴關係。

只需在configure()方法中添加它,它應該可以工作。現在,Guice知道用什麼類來滿足依賴關係。

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

如果你不想在模塊中配置此,你可以註釋界面。例如

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

@Singleton註釋只告訴吉斯返回相同的實例類(Singleton模式)每次該類的請求通過Injector.getInstance()製成的,而不是每次創建一個新的實例。但請注意,這僅僅是每個Injector的Singleton,而不是每個Classloader。

+1

Bar上的@Singleton註釋不告訴Guiced它是IBar的具體實現嗎? 我不喜歡有一個大模塊() - 我更喜歡批註類。用Guist怎麼做到這一點? – ripper234 2009-07-02 13:56:50