Dagger依赖注入详解(一)

Dagger是一款优秀的注入框架,但是它是怎么实现依赖注入的呢,或者说,为什么通过Component,Module,以及@Inject等关键字就可以实现自动注入呢?我们将通过Dagger自动生成的注入代码观察其工作原理。

  1. Dagger基础概念
    1.1: @Component
    Components从根本上来说就是一个注入器,也可以说是@Inject和@Module的桥梁,它的主要作用就是连接这两个部分。 Components可以提供所有定义了的类型的实例,比如:我们必须用@Component注解一个接口然后列出所有的@Modules组成该组件,如 果缺失了任何一块都会在编译的时候报错。所有的组件都可以通过它的modules知道依赖的范围。
    1.2: @Module
    Modules类里面的方法专门提供依赖,所以我们定义一个类,用@Module注解,这样Dagger在构造类的实例的时候,就知道从哪里去找到需要的 依赖。modules的一个重要特征是它们设计为分区并组合在一起(比如说,在我们的app中可以有多个组成在一起的modules)。
    1.3: @Provider
    在modules中,我们用这个注解来修饰具体的方法,以此来告诉Dagger我们想要构造方法返回的对象并提供将此提供依赖。
    1.4: @Inject
    我们通常在需要依赖的地方使用这个注解。你用它告诉Dagger这个类或者字段需要依赖注入。这样,Dagger就会构造一个这个类的实例并满足他们的依赖。
    1.5: @Scope:
    Dagger2可以通过自定义注解限定注解作用域。在具体的代码过程中,我们没必要让每个对象都去了解如何管理他们的实例。使用该注解,将限定其存活时间。简单来说就是我们可以定义所有范围的粒度。

  2. Dagger结构

Dagger结构.png

本章将Dagger的基本概念以及结构做一个大概的介绍,让初识或者未接触Dagger的朋友一个大概的印象,下章将具体讲解Dagger的注入工作原理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容