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()从映射加载属性
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()

日志

日志记录器平台描述
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)
    }
}

另请参阅