Dagger 2 完全解析系列:
Dagger 2 完全解析(一),Dagger 2 的基本使用与原理
Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等
Dagger 2 完全解析(三),Component 的组织关系与 SubComponent
Dagger 2 完全解析(四),Android 中使用 Dagger 2
Dagger 2 完全解析(五),Kotlin 中使用 Dagger 2
Dagger 2 完全解析(六),dagger.android 扩展库的使用
本系列文章是基于 Google Dagger 2.11-rc2 版本
Google I/O 2017 大会上宣布 Kotlin 成为 Android 开发一级语言,kotlin 语言作为 Google 的亲儿子,前途一片光明,而且 Kotlin 加入了很多现代语言特性。最近把我之前写的一个开源项目重构为 Kotlin 版本 – Kotlin 版本的 Gank app,以此来学习 kotlin 语言。其中在 Kotlin 语言中使用 Dagger 2 的写法与 Java 中有些变化,所以写下这篇文章记录下如何在 Kotlin 语言中使用 Dagger 2。
本文中的 Kotlin 版本为 1.2.10
Dagger 2 依赖
引入方式与之前有所区别,Dagger 2 根据注解在编译时生成静态代码,所以需要注解处理器,而 Kotlin 中注解处理工具为 Kotlin Annotatino processing tool(kapt)。
build.gradle
|
|
Inject 注解
- 标记目标类构造函数,以此为 Component 提供依赖实例
|
|
- 标注成员属性,确定需要注入的依赖
|
|
Module 和 Component
Module 和 Component 的写法和 Java 一样,只是 Kotlin 语法不一样
|
|
Scope 作用域
自定义的作用域的语法也变了,下面是常见的两个自定义 Scope:
|
|
总结
kapt 编译时生成的代码和之前一样,Component 的使用方式没有改变,需要注意就是 Inject 标注成员属性时,需要标注 setter。
如果想看更具体的代码,可以前往我开源的 Gank - kotlin 项目:https://github.com/JohnnyShieh/Gank/tree/kotlin
到这里,Dagger 2 完全解析系列就结束了,有什么疑问欢迎在下面留言。