Google Guice вводит null

Я пытаюсь внедрить экземпляр 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 равно нулю. Мне тоже нужно внедрить DelegateFactory? Я пробовал аннотировать DelegateFactory с помощью @Singleton, но это не помогло

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 286
1

Ответы 1

Убедись в том, что :

  • Ваш класс ServiceBinder расширяет com.google.inject.AbstractModule
  • Ваш DelegateFactory привязан к вашему ServiceBinder или подклассу AbstractModule другого guice следующим образом:

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

Другие вопросы по теме