Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin ktor应用程序的StartKoin和install(Koin)之间有什么区别_Kotlin_Ktor_Koin - Fatal编程技术网

Kotlin ktor应用程序的StartKoin和install(Koin)之间有什么区别

Kotlin ktor应用程序的StartKoin和install(Koin)之间有什么区别,kotlin,ktor,koin,Kotlin,Ktor,Koin,我正在开发KTORAPI,我第一次添加DI。我看到事情有两种不同的处理方式,但我找不到一种方式让它们有不同的含义。有什么东西是启动时安装时没有的吗?如果您同时使用embeddedServer或EngineMain,这有关系吗 下面是为上下文安装的模块 val mainModule = module(createdAtStart = true) { // this creates a global kmongo client for our db factory { KMongo.

我正在开发KTORAPI,我第一次添加DI。我看到事情有两种不同的处理方式,但我找不到一种方式让它们有不同的含义。有什么东西是启动时安装时没有的吗?如果您同时使用embeddedServer或EngineMain,这有关系吗

下面是为上下文安装的模块

val mainModule = module(createdAtStart = true) {
    // this creates a global kmongo client for our db
    factory { KMongo.createClient(System.getenv("MONGO_URI") ?: "") }
}
方式1:

fun main(args: Array<String>): Unit = EngineMain.main(args)

@Suppress("unused")
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {

    startKoin {
        modules(mainModule)
    }
}
fun main(args:Array):Unit=EngineMain.main(args)
@抑制(“未使用”)
@kotlin.jvm.jvm重载
fun Application.module(测试:Boolean=false){
斯塔特科因{
模块(主模块)
}
}
方式2:

fun main(args: Array<String>): Unit = EngineMain.main(args)

@Suppress("unused")
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {

    install(Koin){
        modules(mainModule)
    }
}
fun main(args:Array):Unit=EngineMain.main(args)
@抑制(“未使用”)
@kotlin.jvm.jvm重载
fun Application.module(测试:Boolean=false){
安装(Koin){
模块(主模块)
}
}

主要的区别是

**
 * Start a Koin Application as StandAlone
 */
fun startKoin(appDeclaration: KoinAppDeclaration): KoinApplication = KoinPlatformTools.defaultContext().startKoin(appDeclaration)

安装
从ktor库中选取 可以实现不同的事情
startKoin
从哪里来

/**
     * Feature installation script
     */
    public fun install(pipeline: TPipeline, configure: TConfiguration.() -> Unit): TFeature