Guice - Невозможно создать Инъекцию - PullRequest
0 голосов
/ 07 марта 2019

Я использую Guice для внедрения зависимостей, но в моем конкретном случае использования это дает мне эту ошибку:

Классы должны иметь либо один (и только один) конструктор, аннотированный @Inject, либо конструктор с нулевым аргументом, который не является приватным

Я потратил много времени на это, но я все еще не могу понять, почему он не может внедрить зависимость. Кто-нибудь может взглянуть на это?

Моя структура классов выглядит следующим образом:

interface A {
}

Класс B реализует A

Class B implements A {

  @Inject
  B(String para1, MyClass B) {
     // do something
  }

}

Модуль Guice выглядит так:

@AllArgsConstructor
public class GuiceModule extends AbstractModule {

@Override
protected void configure() {

    bind(A.class).to(B.class);

}

@Provides
public MyClass provideMyClass() {
    return new MyClass();
}


@Provides
public String provideString() {
    return "string";
}
}

В каком-то другом классе я учусь:

@Inject A a;

1 Ответ

0 голосов
/ 27 июня 2019

ваш конструктор должен быть публичным, чтобы guice мог его увидеть и внедрить в него.

Вот некоторые ссылки на Guice Docs

Class B implements A {

  @Inject
  ***public***  B(String para1, MyClass B) {
     // do something
  }
}
...