У меня есть класс A
с полем private SomeValue someValue
. Мой Кинжал @Component
класс называется MyApplicationComponent
.
Класс A
создается до DaggerMyApplicationComponent
. Поэтому я не знаю, как вводить someValue
.
Я не могу использовать конструктор, потому что A
создан до компонента.
Я считаю, что я также не могу использовать инъекцию поля, потому что в A
мне нужно было бы позвонить MyApplicationComponent.inject(this)
, но в A
я понятия не имею, когда будет создан экземпляр MyApplicationComponent
, поэтому я не знаю, когда позвонить .inject
.
Я попытался использовать сеттерную инъекцию, добавив этот метод к A
:
@Inject
public void setSomeValue(SomeValue someValue) {
log.info("in setter injector!");
this.someValue = someValue;
}
Кроме того, я добавил это к MyApplicationComponent
:
void inject(A a);
Однако метод установки никогда не вызывается.
Почему этот метод не вызывается?
Как Dagger делает сеттерную инъекцию?
Есть ли какой-нибудь способ сказать Кинжалу ввести someValue
в A
после создания экземпляра DaggerMyApplicationComponent
?