Yatagan 依赖注入框架使用教程
1. 项目介绍
Yatagan 是一个基于 Google's Dagger2 API 的依赖注入(Dependency Injection)框架,特别优化了快速构建和处理大型依赖图的能力。Yatagan 的主要目标是提高大型复杂项目的构建速度,同时支持动态依赖图的管理。尽管它主要针对已经使用 Dagger 的项目,但也适用于其他项目。
Yatagan 支持多种模式(使用不同的后端):
- 代码生成模式(APT/KAPT、KSP)
- 运行时 Java 反射模式
所有后端设计为工作方式相同,因此可以根据工作环境和需求轻松切换后端。
2. 项目快速启动
2.1 安装依赖
首先,确保你已经安装了 Gradle 和 Kotlin(如果使用 Kotlin)。然后在 build.gradle
文件中添加以下依赖:
plugins {
id 'kotlin-kapt' // 如果使用 kapt
id 'com.google.devtools.ksp' version '1.5.21-1.0.0-beta07' // 如果使用 KSP
}
dependencies {
// 使用 kapt
implementation 'com.yandex.yatagan:api-compiled:1.0.0'
kapt 'com.yandex.yatagan:processor-jap:1.0.0'
// 使用 KSP
implementation 'com.yandex.yatagan:api-compiled:1.0.0'
ksp 'com.yandex.yatagan:processor-ksp:1.0.0'
// 使用反射模式
implementation 'com.yandex.yatagan:api-dynamic:1.0.0'
}
2.2 创建组件
创建一个简单的组件类:
@Component
interface MyComponent {
fun getMyClass(): MyClass
}
class MyClass @Inject constructor() {
fun doSomething() {
println("Hello from MyClass!")
}
}
2.3 使用组件
在你的主应用程序中使用该组件:
fun main() {
val component = DaggerMyComponent.create()
val myClass = component.getMyClass()
myClass.doSomething()
}
3. 应用案例和最佳实践
3.1 动态依赖管理
Yatagan 支持动态依赖管理,通过 Optional
类型来处理可选依赖:
@Singleton
class MyClass @Inject constructor(
val myOptionalDependency: Optional<MyClassUnderRuntimeCondition>
)
3.2 性能优化
Yatagan 允许在项目模块中应用处理,仅限于包含根组件声明的模块。这样可以减少不必要的处理,提高构建速度。
4. 典型生态项目
Yatagan 可以与以下项目结合使用,以实现更复杂的依赖注入需求:
- Dagger2: Yatagan 基于 Dagger2 API,因此可以无缝集成。
- Kotlin Symbol Processing (KSP): 用于加速 Kotlin 项目的构建。
- Android: Yatagan 支持 Android 项目,可以在调试和发布模式下使用不同的后端。
通过结合这些项目,Yatagan 可以为大型复杂项目提供高效的依赖注入解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考