Guice配置错误

rip*_*234 3 java configuration dependency-injection guice

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

我有:

  1. 具有空configure()方法的模块.
  2. 一个接口IFoo
  3. 一个类Foo(实现IFoo),用@Singleton注释,带有@Inject注释的无参数构造函数.这是单个带注释的构造函数.

类,构造函数和接口是公共的,但我仍然收到以下错误:

没有针对IFoo的实现.

jit*_*ter 6

你的意思是你在这样做时得到错误?

IFoo foo = injector.getInstance(IFoo.class);
Run Code Online (Sandbox Code Playgroud)

那么很明显.如果configure()是空的,那么guice应该知道什么类来满足依赖性IFoo.

只需在configure()方法中添加它,它应该工作.现在guice知道用什么类来满足依赖.

bind(IFoo.class).to(Foo.class);
Run Code Online (Sandbox Code Playgroud)

如果您不想在模块中配置它,则可以注释该接口.例如

@ImplementedBy(Foo.class)
public interface IFoo {
  ...
}
Run Code Online (Sandbox Code Playgroud)

@Singleton注解只告诉吉斯返回相同的实例类(Singleton模式)每次该类的请求通过制作Injector.getInstance(),而不是每次创建一个新的实例.但请注意,这只是每个Injector的Singleton而不是每个Classloader.

  • 答案延长 (2认同)