Koin-9-Koin Components(组件)

48次阅读
没有评论

共计 1205 个字符,预计需要花费 4 分钟才能阅读完成。

提醒:本文最后更新于2023-05-27 19:05,文中所关联的信息可能已发生改变,请知悉!

https://start.insert-koin.io/#/getting-started/koin-components

开始

Koin in 5 minutes (5分钟快速入手Koin)

Getting Started (开始)

有时不能仅通过Koin声明组件。依赖于你的运行时技术,你可能需要在一个不是用Koin创建的类中从Koin检索实例(例如Android)。

Koin组件实例

通过 KoinComponent 接口来标记你的类就能解锁Koin的注入功能:

  • by inject() – 延迟注入一个实例
  • get() – 检索一个实例
  • getProperty() – 获得一个Koin属性

我们可以将上面的模块注入到类属性中:

1
2
3
4
5
6
7
8
9
10
// Tag class with KoinComponent
class HelloApp : KoinComponent {

// lazy inject dependency
val helloService: HelloServiceImpl by inject()

fun sayHello(){
helloService.sayHello()
}
}

然后我们就只需要开启Koin并运行我们的类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// a module with our declared Koin dependencies 
val helloModule = module {
single { HelloServiceImpl() }
}

fun main(vararg args: String) {

// Start Koin
startKoin {
modules(helloModule)
}

// Run our Koin component
HelloApp().sayHello()
}

引导

KoinComponent 接口也能被用来协助你从Koin外部引导一个应用程序。另外,您可以通过扩展函数直接在一些目标类上引入“KoinComponent”特性(即:Android中的Activity、Fragment have KoinComponent特性)。

Bridge with Koin instance

KoinComponent 接口主要带来了如下内容:

1
2
3
4
5
6
7
interface KoinComponent {

/**
* Get the associated Koin instance
*/
fun getKoin(): Koin = GlobalContext.get().koin
}

他带来了如下的可能性:

然后可以重新定义 getKoin() 函数,以重定向到本地自定义Koin实例

正文完
 
-「
littlecorgi
版权声明:本站原创文章,由 littlecorgi 2020-10-07发表,共计1205字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)