koin - kotlin依赖注入框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BigBoySunshine/article/details/81139673

什么是koin?

koin 是一个用于kotlin的实用型轻量级依赖注入框架,采用纯kotlin编写而成,仅使用功能解析,无代理、无代码生成、无反射。

koin 是一个DSL,一个轻便的容易和一个使用的API。

用法 

1,添加依赖

// Add Jcenter to your repositories if needed
repositories {
    jcenter()    
}
dependencies {
    // Koin for Android
    compile 'org.koin:koin-android:0.9.3'
}

2,声名一个依赖

创建要给仓库来提供一些数据(giveHello()

interface Repository {
    fun giveHello()
}

class MyRepository() : Repository {
    override fun giveHello() = "Hello Koin"
}

创建一个Presenter类来消费数据:

// Use Repository - injected by constructor by Koin
class MyPresenter(val repository : Repository){
    fun sayHello() = repository.giveHello()
}

applicationContext方法来声名一个模块。

// Koin module
val myModule : Module = applicationContext {
    provide { MyPresenter(get()) } // get() will resolve Repository instance
    provide { MyRepository() as Repository }
}

3,开启Koin

再我们的Application中开启Koin

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

4,注入依赖

MyPresenter 和Presenter 实例一起创建。为了再Activity中使用,我们通过by inject()来注入它。

class MyActivity : AppCompatActivity(){

    // Inject MyPresenter
    val presenter : MyPresenter by inject()

    override fun onCreate() {
        super.onCreate()
        // Let's use our presenter
        Log.i("MyActivity","presenter : ${presenter.sayHello()}")
    }
}

by inject()方法允许我们在组件运行时(Activity, fragment, Service...)获取去Koin实例,

猜你喜欢

转载自blog.csdn.net/BigBoySunshine/article/details/81139673
今日推荐