Kodein
Painless Kotlin Dependency Injection
**Kodein** is a Painless Kotlin Dependency Injection The project is written primarily in Kotlin, distributed under the MIT License license, first published in 2015. It has gained significant community traction with 3,331 stars and 177 forks on GitHub. Key topics include: android, compose, compose-desktop, injection, kodein.
KOtlin DEpendency INjection
KODEIN is a straightforward and yet very useful dependency retrieval container. it is effortless to use and configure.
KODEIN works on all Kotlin Multiplatform targets:
- JVM / Android.
- all Native platforms (iOS, macOS, Linux, Windows, WebAssembly).
- Javascript / WasmJs.
KODEIN allows you to:
- Lazily instantiate your dependencies when needed
- Stop caring about dependency initialization order
- Bind classes or interfaces to their instance or provider
- Debug your dependency bindings and recursions
KODEIN provides extensions to be integrable into:
An example is always better than a thousand words:
kotlinval di = DI { bindProvider<Dice> { RandomDice(0, 5) } bindSingleton<DataSource> { SqliteDS.open("path/to/file") } } class Controller(private di: DI) { private val ds: DataSource by di.instance() }
KODEIN is a good choice because:
- It proposes a very simple and readable declarative DSL
- It is not subject to type erasure (as Java is)
- It integrates nicely with Android
- It proposes a very kotlin-esque idiomatic API
- It is fast and optimized (makes extensive use of
inline)
Installation
Kodein is available on Maven Central.
kotlinrepositories { mavenCentral() }
kotlinkotlin { sourceSets { commonMain { dependencies { implementation("org.kodein.di:kodein-di:{version}") } } } }
KODEIN 7+ is the current major version, but documentation is available for previous versions.
Kotlin & JVM compatibility
| Kodein | Kotlin | JDK |
|---|---|---|
| 7.27 | 2.2.+ | min 17 |
| 7.26 | 2.1.+ | min 17 |
| 7.23 | 2.0.+ | min 17 |
| 7.22 | 2.0.+ | min 11 |
| 7.21 | 1.9.+ | min 1.8 |
| 7.20 | 1.8.10 | min 1.8 |
| 7.19 | 1.8.10 | min 1.8 |
| 7.18 | 1.8.0 | min 1.8 |
| 7.17 | 1.8.0 | min 1.8 |
Full table can be found here
Support
Support is held in the Kodein Slack channel
(you can get an invitation to the Kotlin Slack here).
If you are using KODEIN, please let us know!
Supported by
Contributors
Showing top 12 contributors by commit count.
