如果有@inject,则表示必须有@provide? inject field从@provide方法获取其值?
答案 0 :(得分:1)
如果您使用模块
,则为是@Module
public class SomeModule {
@Provides
Unscoped unscoped() {
return new Unscoped();
}
@Provides
@Singleton
Scoped scoped() {
return Scoped();
}
}
带有@Inject
构造函数的BUT 类会自动附加到您的作用域组件,即使没有为其指定模块:
@Singleton
public class Scoped {
@Inject
public Scoped() {
}
}
public class Unscoped {
@Inject
public Unscoped() {
}
}
答案 1 :(得分:0)
如果有@Inject注释,那么它的依赖关系可以通过两种方式提供:
在模块中使用提供注释
@Provides
TasksPresenter provide TasksPresenter(TasksRepository tasksRepository, TasksContract.View tasksView) {
return new TasksPresenter(tasksRepository,tasksView);
}
使用构造函数注入
@Inject
TasksPresenter(TasksRepository tasksRepository, TasksContract.View tasksView) {
mTasksRepository = tasksRepository;
mTasksView = tasksView;
}
这里要注意的一点是Constructor Injection解决了两件事