没有绑定实现 - Java Guice
这里的新手试图使用一个虚拟的Java Facebook应用程序,该应用程序使用Guice将数据库依赖项注入Facebook工厂,但继续有Guice错误告诉我:
### 没有 com.example.storage.Db 的实现,@com.example.storage.annotations.SystemDb() 在 com.example.facebook.client.exceptions.FacebookExceptionHandlerDb at com.example.facebook.client.guice.FacebookClientModule.guice.FacebookClientModule.configure上使用@com.example.storage.annotations.SystemDb() 对参数 0 进行注释
### 在 com.example.facebook.statsd.StatsdClient 中找不到合适的构造函数。类必须具有一个(且只有一个)使用 @Inject 注释的构造函数,或者具有非私有的零参数构造函数。在 com.example.facebook.statsd.StatsdClient.class 同时在 com.example.facebook.client.exceptions.FacebookExceptionHandlerDb 上找到参数 1 的 com.example.facebook.client.exceptions.FacebookExceptionHandlerDb。com.example.facebook.client.guice.FacebookClientModule.configure
应用代码:
应用程序.java
package com.example.facebook;
import com.google.inject.Guice;
import com.restfb.Connection;
import com.restfb.types.Post;
import com.example.facebook.client.FacebookClientFactory;
import com.example.facebook.client.RobustFacebookClient;
import com.example.facebook.client.guice.FacebookClientModule;
import com.example.facebook.statsd.StatsdClient;
public class App {
public static void main ( String[] args ) {
final FacebookClientFactory facebookClientFactory =
Guice.createInjector(new FacebookClientModule()).getInstance(FacebookClientFactory.class);
//error from line above
final RobustFacebookClient robustFacebookClient =
facebookClientFactory.create("accessToken");
//more ...
}
由此产生的错误将我指向绑定:FacebookClientModule
FacebookClientModule.java
public class FacebookClientModule extends AbstractModule {
bind(FacebookExceptionHandler.class).to(FacebookExceptionHandlerDb.class);
//error resulting from the failed binding on the FacebookExceptionHandlerDB class
install(new FactoryModuleBuilder()
.implement(FacebookClient.class, RobustFacebookClient.class)
.build(FacebookClientFactory.class));
}
}
在类中,构造函数具有注入:FacebookExceptionHandleDB
FacebookExceptionHandlerDB.java
public class FacebookExceptionHandlerDb implements FacebookExceptionHandler {
// list of class String variables ...
private final FacebookErrorParser parser;
private final Db db;
private StatsdClient statsd;
@Inject
public FacebookExceptionHandlerDb(@SystemDb Db db, StatsdClient statsd, FacebookErrorParser parser) {
this.db = db;
this.statsd = statsd;
this.parser = parser;
}
}
据我所知,参数零和一的依赖注入分别失败了。有人可以指出应用代码中缺少的位置或内容吗?db
statsD