Dagger2注解框架在kotlin中的使用

Dagger2注解框架在kotlin中的使用:
本文章将会详细介绍 Dagger2 注入神器在kotlin 中的使用,由于Dagger2的概念、理论不是很清晰,我将自身的理解和使用经验写出来分享给大家,希望对大家有帮助。


[概述]:无论是在 kotlin 还是在 java 中,使用方法大同小异,希望我的文章能帮助到大家更好的使用Dagger2。Dagger2是编译时依赖注入框架,不使用反射,解决了基于反射的开发与性能的问题。举个例子,在一个类里创建另一个类的实例,高耦合一旦动弹则牵动全身,Dagger2 可以解决这个问题。dagger2是一个依赖注入框架,在编译期间自动生成代码,负责依赖对象的创建。

一、添加依赖

在Module 中的build.gradle 中引入插件,java 使用apt ,kotlin 使用kapt

1
apply plugin: 'kotlin-kapt'

然后在dependencies{} 中引用添加依赖包

1
2
compile "com.google.dagger:dagger:2.14.1" 
kapt "com.google.dagger:dagger-compiler:2.14.1"

二、常用注解

@Inject:注入类实例。

1
2
3
4
5
6
7
8
9
10
11
12
13
@Inject 
lateinit var mPresenter:MainPresenter

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

class MainPresenter @Inject constructor() {
fun doSomething():String{
return "This is result"
}
}

使用@Inject 在成员变量和构造方法前面声明,可以不用调用 new classA() 进行实例化。通过注解,自动实例化。

@Module: 自定义可注入方法的类,方法使用@Provides。

@Provides:此注解用于标记方法,表示可以通过这个方法获取一个对象,一般用于自定义类中。

@Component:此注解主要用于关联自定义module类和MainActivity;关联module使用:@Component(modules={UserModule.class});关联Activity,以方法参数的形式传入MainActivity到连接器中

@Named与@Qualifier:用于区别不同对象的实例。必须要成对出现,否则会报错。

@PerActivity:限定对象的生命周期和Activity一样。一般应用于自定义的Component上。

@Singleton:标记为单例模式,如果在自定义Module中使用了此注解,在自定义的Component上也要使用该注解。

kapt “com.google.dagger:dagger-compiler:${versions.dagger}”

关联Activity 与Module:
appComponent = DaggerAppComponent.builder().appModule(AppModule(this)).build()
AppModule(this):该module 对象

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 一、添加依赖
  2. 2. 二、常用注解
,