Skip to content

Koin 註解使用入門

Koin 註解專案的目標是幫助您以非常快速且直觀的方式宣告 Koin 定義,並為您生成所有底層的 Koin DSL。其目標是借助 Kotlin 編譯器,幫助開發者體驗實現擴展並快速開發 🚀。

入門

不熟悉 Koin?請先查看 Koin 入門指南

使用定義與模組註解標記您的元件,並使用慣用的 Koin API。

kotlin
// 標記您的元件以宣告定義
@Single
class MyComponent
kotlin
// 宣告模組並掃描註解
@Module
@ComponentScan
class MyModule

請按照以下方式使用 org.koin.ksp.generated.* 導入,以便能夠使用生成的程式碼:

kotlin
// 使用 Koin 生成
import org.koin.ksp.generated.*

fun main() {
    val koin = startKoin {
        printLogger()
        modules(
          // 在此使用您的模組,搭配 Module 類別上生成的 ".module" 擴充功能
          MyModule().module
        )
    }

    // 像往常一樣使用您的 Koin API
    koin.get<MyComponent>()
}

就是這樣,您可以使用 慣用的 Koin API 在 Koin 中使用您的新定義。

KSP 選項

Koin 編譯器提供了一些配置選項。根據官方文件,您可以將以下選項添加到您的專案中:KSP 快速入門文件

編譯安全 - 在編譯時檢查您的 Koin 配置 (從 1.3.0 開始)

Koin 註解允許編譯器插件在編譯時驗證您的 Koin 配置。您可以透過將以下 KSP 選項添加到您的 Gradle 模組中來啟用此功能:

groovy
// 在 build.gradle 或 build.gradle.kts

ksp {
    arg("KOIN_CONFIG_CHECK","true")
}

編譯器將檢查您配置中使用的所有依賴項是否已宣告,並且所有使用的模組都可被存取。

使用 @Provided 繞過編譯安全 (從 1.4.0 開始)

除了編譯器中忽略的類型 (Android 常見類型) 之外,編譯器插件可以驗證您的 Koin 配置。如果您想排除某個參數不被檢查,可以在參數上使用 @Provided 來指示此類型是從目前的 Koin 註解配置外部提供的。

以下表示 MyProvidedComponent 已在 Koin 中宣告:

kotlin
class MyProvidedComponent

@Factory
class MyPresenter(@Provided val provided : MyProvidedComponent)

停用預設模組 (從 1.3.0 開始)

預設情況下,Koin 編譯器會檢測任何未綁定到模組的定義,並將其放入一個「預設模組」中,該模組是生成在您專案根目錄的 Koin 模組。您可以使用以下選項停用預設模組的使用和生成:

groovy
// 在 build.gradle 或 build.gradle.kts

ksp {
    arg("KOIN_DEFAULT_MODULE","false")
}

Kotlin KMP 設定

請按照官方文件所述的 KSP 設定:KSP 與 Kotlin Multiplatform

您也可以查看 Hello Koin KMP 專案,其中包含 Koin 註解的基本設定。