【发布时间】:2018-08-25 15:14:52
【问题描述】:
我有一个类A 有一个字段private SomeValue someValue。我的 Dagger @Component 类被称为 MyApplicationComponent。
A 类在 DaggerMyApplicationComponent 之前实例化。所以不知道怎么注入someValue。
我不能使用构造函数注入,因为A 是在组件之前创建的。
我相信我也不能使用字段注入,因为在A 中我需要调用MyApplicationComponent.inject(this),但在A 中我不知道MyApplicationComponent 什么时候会被实例化,所以我不知道什么时候拨打.inject。
我尝试使用setter注入,将此方法添加到A:
@Inject
public void setSomeValue(SomeValue someValue) {
log.info("in setter injector!");
this.someValue = someValue;
}
另外,我将此添加到MyApplicationComponent:
void inject(A a);
但是,setter 方法永远不会被调用。
为什么不调用这个方法?
Dagger 是如何做 setter 注入的?
一旦DaggerMyApplicationComponent 被实例化,有没有办法告诉Dagger 将someValue 注入A?
【问题讨论】: