Koin快速入门——Kotlin

Koin - 一个基于Kotlin语言智能的依赖注入框架,让你专注于应用开发而不是工具使用。

本教程可以让你使用Koin框架写一个可以注入和调用你的组件的Kotlin应用。

框架引入

首先,将koin-core在Gradle文件中引入如下:

// Add Jcenter to your repositories if needed
repositories {
    jcenter()    
}
dependencies {
    // Koin for Kotlin apps
    compile "org.koin:koin-core:$koin_version"
    // Testing
    testCompile "org.koin:koin-test:$koin_version"
}

应用开发

在我们的实例应用中,我们要定义一下两个组件:

  • HelloMessageData - 持有数据
  • HelloService - 使用和展示HelloMessageData的数据
  • HelloApplication - 调用HelloService

数据持有类

创建一个数据类HelloMessageData持有数据:

/**
 * A class to hold our message data
 */
data class HelloMessageData(val message : String = "Hello Koin!")

服务接口和实现

创建一个 HelloService接口他的实现类HelloServiceImpl来展示和使用HelloMessageData

使用类

要运行HelloService组件,需要先创建一个运行时(runtime)组件,让我们写一个HelloApplication类继承KoinComponent接口,这个接口可以让我们在后面使用的时候调用by inject()函数拿到HelloService组件。

/**
 * HelloApplication - Application Class
 * use HelloService
 */
class HelloApplication : KoinComponent {

    // Inject HelloService
    val helloService by inject<HelloService>()

    // display our data
    fun sayHello() = println(helloService.hello())
}

声明依赖

现在,让我们Koin模块组装HelloMessageDataHelloService

val helloModule = module {

    single { HelloMessageData() }

    single { HelloServiceImpl(get()) as HelloService }
}

我们用关键字single声明上面的组件为单例。

  • single { HelloMessageData() }:声明一个HelloMessageData单例
  • single { HelloServiceImpl(get()) as HelloService }:将单例HelloMessageData注入到HelloServiceImpl,声明一个HelloService单例

完成

main函数启动应用:

fun main(vararg args: String) {

    startKoin {
        // use Koin logger
        printLogger()
        // declare modules
        modules(helloModule)
    }

    HelloApplication().sayHello()
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容