我正在尝试注入一个vertx实例
public ServiceBinder(Vertx vertx) {
this.vertx = vertx;
}
我像这样绑定
@Override
protected void configure() {
bind(Vertx.class).toInstance(this.vertx);
}
我正在调用这样的注射
public class BaseVerticle extends AbstractVerticle{
@Override
public void start(Future<Void> startFuture) {
Guice.createInjector(new ServiceBinder(vertx)).injectMembers(this);
}
}
现在我尝试将其注入另一个类
public class DelegateFactory {
@Inject
private Vertx vertx;
}
但是这里vertx的值为null。我是否也需要注入DelegateFactory? 我尝试用@Singleton注释DelegateFactory,但它没有帮助
答案 0 :(得分:0)
确保:
ServiceBinder
课程延伸com.google.inject.AbstractModule
您的DelegateFactory
已绑定在ServiceBinder
或其他guice的AbstractModule
子类中,如下所示:
bind(DelegateFactory.class).in(Singleton.class)
或
bind(DelegateFactory.class).toInstance(...)
P.S:在ServiceBinder
构造函数中快速失败最好:
import static java.util.Objects.requireNonNull;
public ServiceBinder(Vertx vertx) {
this.vertx = requireNonNull(vertx, "vertx must not be null");
}