The goal of Koin Annotations project is to help declare Koin definition in a very fast and intuitive way, and generate all underlying Koin DSL for you. The goal is to help developer experience to scale and go fast ๐, thanks to Kotlin Compilers.
Here below is the current version:
Warning: while this is still in beta. There can be some breaking changes coming in next releases ๐
koinAnnotations = "1.0.0-beta-2"
Koin 3.2+ is required
First, setup KSP plugin like this, in your root build.gradle
:
plugins {
id "com.google.devtools.ksp" version "1.6.10-1.0.2"
}
Use the following dependencies in your Gradle dependencies section:
// Koin Annotations
implementation "io.insert-koin:koin-annotations:$koinAnnotations"
// Koin Annotations - Ksp Compiler
ksp "io.insert-koin:koin-ksp-compiler:$koinAnnotations"
On your app add the following to generated source code:
- On Kotlin project:
sourceSets.main {
java.srcDirs("build/generated/ksp/main/kotlin")
}
- on Android project:
android {
applicationVariants.all { variant ->
variant.sourceSets.java.each {
it.srcDirs += "build/generated/ksp/${variant.name}/kotlin"
}
}
}
Not familiar with Koin? First take a look at Koin Getting Started
Tag your components with definition & module annotations, and use the regular Koin API.
// Tag your component to declare a definition
@Single
class MyComponent
// Declare a module and scan for annotations
@Module
@ComponentScan
class MyModule
Use the org.koin.ksp.generated.*
import as follow to be able to use generated code:
// Use Koin Generation
import org.koin.ksp.generated.*
fun main() {
val koin = startKoin {
printLogger()
modules(
// use your modules here, with generated ".module" extension on Module classes
MyModule().module
)
}
// Just use your Koin API as regular
koin.get<MyComponent>()
}
That's it, you can use your new definitions in Koin with the regular Koin API
Below some quickstart apps: