Kotlin之Koin

作者: wenson123 | 来源:发表于2018-09-04 17:00 被阅读23次

Koin是一款轻量级的依赖注入框架,根据官方的描述,它无代理,无代码生成,无反射。

学过Dagger2的同学都深深体会到Dagger入门的艰辛。
但是Koin,你通过5分钟的学习就可以掌握它的基本用法。
学完Koin,你可以向Dagger 说bye bye了。

第一步:Gradle Setup

在你的app build.gradle中添加依赖:

// Add Jcenter to your repositories if needed
repositories {
    jcenter()    
}
dependencies {
    // Koin for Android - Scope feature
    // include koin-android-scope & koin-android
    compile 'org.koin:koin-android-viewmodel:1.0.0-RC-1'
}

第二步:Our components

写一些测试用的类,提供数据

interface HelloRepository {
    fun giveHello(): String
}

class HelloRepositoryImpl() : HelloRepository {
    override fun giveHello() = "Hello Koin"
}

第三步:自定义ViewModel

使用第二步定义类提供的数据

class MyViewModel(val repo : HelloRepository) : ViewModel() {

    fun sayHello() = "${repo.giveHello()} from $this"
}

第四步:定义Koin module

val appModule = module {

    // single instance of HelloRepository
    single<HelloRepository> { HelloRepositoryImpl() }

    // MyViewModel ViewModel
    viewModel { MyViewModel(get()) }
}

代码分析:

  • appModule中声明了MyViewModel,它的参数传入了get(), 它将自动搜索到对应的HelloRepository,创建实例。
  • single标明HelloRepository创建的是单例

第五步:启动 Koin

class MyApplication : Application(){
    override fun onCreate() {
        super.onCreate()
        // Start Koin
        startKoin(this, listOf(appModule))
    }
}

第六步:注入依赖

class MyViewModelActivity : AppCompatActivity() {
    
    // Lazy Inject ViewModel
    val myViewModel: MyViewModel by viewModel()

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

        //...
    }
}

总结

通过上述几步,我们实现了自定义module的依赖注入,代码非常简单,易于理解。

本文基于Koin的1.0.0-RC-1版本分析。
值得注意的是Koin针对Java,Android,和AndriodX的依赖库是不一样,需要根据你的实际需求添加,详见
https://insert-koin.io/docs/1.0/setup/

如果你需要了解更多信息,请参考:
https://insert-koin.io/docs/1.0/getting-started/introduction/
https://insert-koin.io/docs/1.0/quick-references/koin-dsl/

官网:
https://insert-koin.io/

相关文章

  • Kotlin之Koin

    Koin是一款轻量级的依赖注入框架,根据官方的描述,它无代理,无代码生成,无反射。 学过Dagger2的同学都深深...

  • 深入理解Koin框架之koin-core

    深入理解Koin [toc] koin是使用kotlin编写的一款轻量级依赖注入(DI)框架,是Android开发...

  • Koin简单使用

    1.什么是Koin Koin是适用于Kotlin的轻量级注入工具。无代理、无代码生成、无反射,所以性能比较好。 注...

  • android koin 的使用

    说明 Koin 是一个用于 Kotlin 的实用型轻量级依赖注入框架,采用纯 Kotlin 编写而成,仅使用功能解...

  • Koin注入框架在Kotlin项目中的使用

    koin注入架构主要的优点就是简洁,上手容易、使用方便,配合kotlin使用更佳,直接进入主题。 1.项目中引入k...

  • Android Weekly Notes #407

    Android Weekly Issue #407 Unboxing Koin 2.1 Koin的新改进. App...

  • 把玩Kotlin依赖注入框架Koin

    简要介绍 Koin是一个Kotin极轻量的依赖注入框架,据官方资料显示,它无代理,无代码生成,无反射。 把玩手法 ...

  • 使用 koin 作为 Android 注入工具,真香

    使用 koin 作为 Android 注入工具,真香 koin 为 Android 提供了简单易用的 API 接口...

  • Kotlin之美——DSL篇

    Kotlin 系列:Kotlin之美——高效篇Kotlin之美——DSL篇 Kotlin DSL 把 Kotlin...

  • Kotlin之美——高效篇

    Kotlin 系列:Kotlin之美——高效篇Kotlin之美——DSL篇 Kotlin 作为后起之秀,站在巨人们...

网友评论

    本文标题:Kotlin之Koin

    本文链接:https://www.haomeiwen.com/subject/ggtnwftx.html