Guice配置错误

时间:2009-07-02 11:36:21

标签: java configuration dependency-injection guice

我正在尝试将Google Guice与@Inject和@Singleton属性一起使用,如下所示:

我有:

  1. 具有空configure()方法的模块。
  2. 接口IFoo
  3. 使用@Singleton注释的类Foo(实现IFoo),带有@Inject注释的无参数构造函数。这是单个带注释的构造函数。
  4. 类,构造函数和接口是公共的,但我仍然收到以下错误:

      

    没有绑定IFoo的实现。

1 个答案:

答案 0 :(得分:6)

你的意思是你这样做时会出错?

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

那么很明显。如果configure()为空,那么guice应该知道哪个类满足IFoo的依赖。

只需在configure()方法中添加它即可。现在guice知道用什么类来满足依赖。

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

如果您不想在模块中配置它,可以注释界面。 e.g。

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

@Singleton注释只告诉guice每次通过Injector.getInstance()发出类的请求而不是每次创建一个新实例时,都会返回该类的相同实例(Singleton模式)。但请注意,这只是每个Injector的Singleton而不是每个Classloader。