Я пытаюсь внедрить экземпляр 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, но это не помогло




Убедись в том, что :
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");
}