google guice注入null

时间:2018-04-05 08:00:32

标签: java nullpointerexception guice vert.x

我正在尝试注入一个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,但它没有帮助

1 个答案:

答案 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");
}