Skip to content

啟動 Koin 參考

啟動 Koin 的快速參考。如需詳細指南,請參閱 核心 - 啟動 Koin

啟動方法

方法使用案例
startKoin { }標準應用程式 - 註冊於 GlobalContext
koinApplication { }測試、SDK — 隔離的執行個體
koinConfiguration { }用於 Compose、Ktor 的配置
startKoin<T>()使用編譯器外掛程式的強型別啟動

基本啟動

kotlin
startKoin {
    modules(appModule)
}

完整配置

kotlin
startKoin {
    logger(Level.INFO)
    environmentProperties()
    fileProperties()
    properties(mapOf("env" to "production"))
    modules(coreModule, networkModule)
    lazyModules(analyticsModule)
    createEagerInstances()
    allowOverride(false)
}

配置選項

選項說明
logger()設定記錄層級與實作
modules()立即載入模組
lazyModules()在背景載入模組
properties()從映射 (map) 載入屬性
fileProperties()從 koin.properties 檔案載入
environmentProperties()從系統/環境載入
createEagerInstances()建立所有 createdAtStart 單例執行個體
allowOverride()啟用/停用定義覆寫

強型別啟動(編譯器外掛程式)

需要 Koin 編譯器外掛程式@KoinApplication

kotlin
@KoinApplication
class MyApp

// 啟動
startKoin<MyApp>()

// 包含配置
startKoin<MyApp> {
    printLogger()
}

動態模組管理

kotlin
// 啟動後載入
loadKoinModules(featureModule)

// 卸載
unloadKoinModules(featureModule)

停止 Koin

kotlin
stopKoin()  // 全域執行個體

// 隔離的執行個體
koinApp.close()

記錄

Logger平台說明
EmptyLogger所有不記錄(預設)
PrintLogger所有主控台輸出
AndroidLoggerAndroidLogcat
SLF4JLoggerJVMSLF4J
kotlin
startKoin {
    logger(Level.DEBUG)  // 或在 Android 使用 androidLogger()
}

屬性

kotlin
startKoin {
    environmentProperties()
    fileProperties()  // koin.properties
    properties(mapOf("key" to "value"))
}

// 在模組中
single {
    ApiClient(url = getProperty("server_url"))
}

平台範例

Android

kotlin
class MainApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        startKoin {
            androidLogger()
            androidContext(this@MainApplication)
            modules(appModule)
        }
    }
}

Compose

kotlin
@Composable
fun App() {
    KoinApplication(
        configuration = koinConfiguration { modules(appModule) }
    ) {
        MainScreen()
    }
}

Ktor

kotlin
fun Application.module() {
    install(Koin) {
        slf4jLogger()
        modules(appModule)
    }
}

另請參閱