https://start.insert-koin.io/#/getting-started/starting-koin
开始
Koin in 5 minutes (5分钟快速入手Koin)
Getting Started (开始)
Koin is a DSL, a container & a pragamtic API to leverage your dependencies.
Koin是一个DSL、一个容器、一个实用的API来有效利用我们的依赖
Koin DSL包含这些:
- KoinApplication DSL: 描述如何配置你的Koin Application
- Module DSL: 描述你的定义
开始使用Koin可以通过如下几种使用 startKoin
的形式:
在一个Kotlin文件中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| fun main(vararg args: String) {
startKoin {
// enable Printlogger with default Level.INFO 使用默认Level.INFO来开启Printlogger
// can have Level & implementation 有Level和implementation
// equivalent to logger(Level.INFO, PrintLogger()) 相当于Logger
printlogger()
// declare properties from given map 从给定的map中声明属性
properties( /* properties map */)
// load properties from koin.properties file or given file name
// 从koin.properties文件或者给定的文件名中加载属性
fileProperties()
// load properties from environment 从环境中加载属性
environmentProperties()
// list all used modules 列出所有的module
// as list or vararg 通过list或者可变长度的参数
modules(myModules)
}
}
|
在任何一个Android类中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
// use AndroidLogger as Koin Logger - default Level.INFO
// 使用AndroidLogger作为Koin Logger - 默认Level.INFO
androidLogger()
// use the Android context given there 使用这给出的Android context
androidContext(this@MainApplication)
// load properties from assets/koin.properties file 从assets/koin.properties文件中加载属性
androidFileProperties()
// module list
modules(myModules)
}
}
}
|
如果你不能注入Android context或者application,那就确保在你的Koin application声明中使用 androidContext()
函数。
Starting Koin from your Application
extension function:
1
2
3
4
5
6
7
8
9
10
| fun Application.main() {
// Install Ktor features
install(Koin) {
// Use SLF4J Koin Logger at Level.INFO
slf4jLogger()
// declare used modules
modules(myModules)
}
}
|
Here below are the KoinApplication builders:
下面这些是KoinApplicatioon builders(构造者):
startKoin { }
- 创建并注册如下的KoinApplication实例koinApplication { }
- 创建KoinApplication实例
1
2
3
4
5
6
7
8
9
10
11
| // Create and register following KoinApplication instance
startKoin {
logger()
modules(coffeeAppModule)
}
// create KoinApplication instance
koinApplication {
logger()
modules(coffeeAppModule)
}
|
开始时,Koin log就需要被定义他的名字或类型(如果log是活跃状态):(At start, Koin log what definition is bound by name or type (if log is activated):)
1
2
3
| [INFO] [Koin] bind type:'org.koin.example.CoffeeMaker' ~ [type:Single,class:'org.koin.example.CoffeeMaker']
[INFO] [Koin] bind type:'org.koin.example.Pump' ~ [type:Single,class:'org.koin.example.Pump']
[INFO] [Koin] bind type:'org.koin.example.Heater' ~ [type:Single,class:'org.koin.example.Heater']
|
快速回顾一下Koin DSL关键字:
startKoin { }
- 创建和注册如下的KoinApplication实例koinApplication { }
- 创建KoinApplication实例modules(...)
- 声明使用的moduleslogger()
- 声明Printloggerproperties(...)
- 声明map属性fileProperties()
- 从文件中使用属性environmentProperties()
- 从环境中使用属性androidLogger()
- 声明 Android Koin loggerandroidContext(...)
- 使用给出的Android contextandroidFileProperties()
- 使用 Android assets 中的属性文件slf4jLogger(...)
- 使用SLF4J Logger