Я работаю над ktor api и впервые добавляю DI. Я видел, как вещи делаются двумя разными способами, и я не мог найти способ, которым они означали бы что-то другое. Есть ли что-то, что делает Start, чего не делает установка? Имеет ли значение, используете ли вы 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)
}
}
способ 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)
}
}