有人能为匕首2提供一个很好的解释吗?

我真的很难理解Dagger 2依赖注入系统。

我理解使用注释来告诉Dagger我们需要在这里提供某种类型的实例。@Inject

但是,我不了解其他组件的各种角色,例如:,,,以及它们如何协同工作以向适当的依赖项提供适当的实例。@Module@Component@Provides

有人可以简单明了地解释一下吗?


答案 1

@Module:模块是其方法提供依赖项的类,因此我们定义一个类并用@Module对其进行注释,因此,Dagger将知道在哪里可以找到依赖项,以便在构造类实例时满足它们。模块的一个重要功能是它们被设计为可以分区和组合在一起(例如,我们将看到在我们的应用程序中,我们可以有多个组合的模块)。

@Component:组件基本上是喷油器,假设@Inject@Module之间的桥梁,其主要职责是将两者放在一起。它们只为您提供了您定义的所有类型的实例,例如,我们必须使用@Component注释接口并列出将组成该组件的所有@Modules,如果缺少任何一个,我们将在编译时收到错误。所有组件都知道它通过其模块提供的依赖项的范围。

@Provide:在模块内部,我们定义了包含此注释的方法,该注释告诉Dagger我们想要如何构造和提供提到的依赖项。

我建议你读这个:

我想这将有助于理解。


答案 2

您可以在此处找到有用的 Dagger2 示例项目和教程。

使用 MVP 的 Dagger 2 工作示例项目

视频教程

实用教程


推荐