java–Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?

java–Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?,第1张

概述从这里查看Android架构蓝图“todo-mvp-dagger”:https://github.com/googlesamples/android-architecture.我正在尝试理解Dagger2实现,我似乎无法弄清楚他们如何让Dagger2提供TasksRepository.他们有@Provides用于“provideTasksLocalDataSource”和“provideTasksRemoteDataSourc

从这里查看Android架构蓝图“todo-mvp-dagger”:https://github.com/googlesamples/android-architecture.

我正在尝试理解Dagger2实现,我似乎无法弄清楚他们如何让Dagger2提供TasksRepository.

他们有@ProvIDes用于“provIDeTasksLocalDataSource”和“provIDeTasksRemoteDataSource”,但实际的TaskRepository是哪一个?

在TodoApplication类中,他们有:

@InjectTasksRepository tasksRepository;

怎么能在没有@ProvIDes的情况下注入它呢?

如果我尝试在我自己的应用程序中使用相同的方法,我会收到此错误:

cannot be provIDed without an @ProvIDes- or @Produces-annotated method

所以我在Blueprints代码中到处寻找,但我看不出他们是如何做到的.是否有一些技巧允许他们没有@ProvIDes?它肯定会建立起来,所以他们以某种方式绕过它.

有人在实际的github页面上问了同样的问题,但在撰写本文时没有答案. https://github.com/googlesamples/android-architecture/issues/561.

我在撰写本文时的最新提交是“082bd72d62472f9caadd2979046067fb928bbfef”.

解决方法:

在您提到的存储库中,Dagger 2知道如何通过使用@Inject标记的构造函数注入TasksRepository.从source:

@InjectTasksRepository(@Remote TasksDataSource tasksRemoteDataSource,        @Local TasksDataSource tasksLocalDataSource) {    mTasksRemoteDataSource = tasksRemoteDataSource;    mTasksLocalDataSource = tasksLocalDataSource;}

由于构造函数是使用@Inject注释的,Dagger 2将尝试使用构造函数将TasksRepository注入到消费者(如TodoApplication)中.

由于TasksDataSource已经绑定在TasksRepositoryModule中,因此Dagger 2有足够的信息来执行注入,而不需要额外的@ProvIDes或@Binds方法.

同样,您可以执行以下 *** 作:

class Foo {   private final bar bar;   @Inject   Foo(bar bar) {       this.bar = bar;   }}class bar {    @Inject     bar() {}}class Activity extends AppCompatActivity {    @Inject Foo foo;}

而Dagger 2将能够在AppCompatActivity中注入Foo.为什么?

> Dagger 2知道如何构造一个bar对象(通过调用空构造函数)
> Dagger 2知道在创建Foo实例时,必须使用带有@Inject注释的构造函数和单个参数bar.
> Foo没有其他依赖关系,换句话说,完整的对象图可用.

总结

以上是内存溢出为你收集整理的java – Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?全部内容,希望文章能够帮你解决java – Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1112456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存