Dagger2入门

本文介绍了Dagger2依赖注入框架的基本配置方法,包括必要的Gradle依赖项,并详细解释了核心注解如@Inject、@Provide、@Module和@Component的作用及使用场景。同时,还介绍了作用域限定和依赖标识符的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于: https://google.github.io/dagger/users-guide

Dagger是代替了工厂,实现了依赖注入的设计模式。Dagger2实现了全栈生成代码,和Dagger相比,使依赖注解更简单。

一、配置

在project build.gradle中

dependencies { classpat'com.neenbedankt.gradle.plugins:android-apt:1.8'}

app build.gradle中

apply plugin: 'com.neenbedankt.android-apt'
    dependencies{ 


    compile 'com.google.dagger:dagger:2.0.2'
    compile 'com.google.dagger:dagger-compiler:2.0.2'
    provided 'org.glassfish:javax.annotation:10.0-b28'
     }  
    lintOptions {//变异时报错的提示
        warning 'InvalidPackage'
    }

二、注解

@Inject: 这个类或者字段需要依赖注入。Dagger就会构造一个这个类的实例。

不可以使用在:
接口不可以被构造
第三方类不能被注释

@Provide:如果@Inject不满足,使用 @Provide注释方法满足依赖(提供的也是构造所需的对象)。所有的@Provides方法必须属于一个 module,在类上面添加 @Module。

@Module: Modules类里面的方法专门提供依赖,所以我们定义一个类,用@Module注解,这样Dagger在构造类的实例的时候,就知道从哪里去找到需要的依赖。modules的一个重要特征是它们设计为分区并组合在一起(比如说,在我们的app中可以有多个组成在一起的modules)。

@Component: 注入器,@Inject和@Module的桥梁,连接这两个部分。 使用 @Component注解在接口上,通过(modules = DripCoffeeModule.class)中类型,去对应类中得到所需注册的对象。

对应接口的前缀是Dagger。获得接口实例:

①通过builder()唤醒接口,返回的Builder设置依赖,–> build() 创建一个新的实例。

②使用create()创建一个新的实例。

@Scope:Dagger2可以通过自定义注解限定注解作用域。我们用自定义的@PerActivity注解一个类,所以这个对象存活时间就和 activity的一样。简单来说就是我们可以定义所有范围的粒度。

Qualifier: 当类的类型不足以鉴别一个依赖的时候,我们就可以使用这个注解标示。例如:在Android中,我们会需要不同类型的context,所以我们就可以定义 qualifier注解“@ForApplication”和“@ForActivity”,这样当注入一个context的时候,我们就可以告诉 Dagger我们想要哪种类型的context。

在Model中找创建对象的方法,没有走类的构造方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值