【发布时间】:2011-06-07 20:33:17
【问题描述】:
根据Guice的ThrowingProvider文档,我有以下界面:
public interface IConfigurableProvider<T> extends ThrowingProvider<T, ConfigException> {}
我有多个实现这个接口的类,假设我有以下:
public class SomethingProvider extends ConfiguredProvider implements IConfigurableProvider<Something> {}
当然这个类实现了必要的方法:
public Something get() throws ConfigException { /* ... */ }
在我的模块中,MyModule.java 中有以下代码
ThrowingProviderBinder.create(binder())
.bind(IConfigurableProvider.class, Something.class)
.to(SomethingProvider.class);
但是当我启动我的应用程序时,会产生以下错误:
6) No implementation for com.package.Something was bound.
while locating com.package.Something
for parameter 5 at com.package.OtherClass.<init>(OtherClass.java:78)
at com.package.MyModule.configure(MyModule.java:106)
我真的不知道应该从哪里开始寻找错误。
更新:即使我也设置了范围,它也会提供相同的错误:
ThrowingProviderBinder.create(binder())
.bind(IConfigurableProvider.class, Something.class)
.to(SomethingProvider.class)
.in(Singleton.class);
【问题讨论】:
-
正如公认的答案指出的那样,我误解了
ThrowingProviderBinder的用法。注入的构造函数应该等待提供者而不是提供的对象(并且应该处理已检查的异常)。
标签: java dependency-injection guice provider