A pragmatic lightweight dependency injection framework for Kotlin developers.
Written in pure Kotlin, using functional resolution only: no proxy, no code generation, no reflection.
Koin is a DSL, a light container and a pragmatic API
Official Website 👉 https://insert-koin.io
- Follow us on Twitter for latest news: @insertkoin_io
- Koin developers on Medium: koin developers hub
Documentation:
Any question about Koin usage?
- Come talk on slack #koin channel
- Post your question on Stackoverflow - #koin tag
Online resources about Koin - Talking about Koin
Found a bug or a problem on a specific feature? Open an issue on Github issues
Want to help or share a proposal about Koin? problem on a specific feature?
- Open an issue to explain the issue you want to solve Open an issue
- Come talk on slack #koin-dev channel
- After discussion to validate your ideas, you can open a PR or even a draft PR if the contribution is a big one Current PRs
Additional readings about basic setup: https://github.com/InsertKoinIO/koin/blob/master/CONTRIBUTING.adoc
// latest stable koin_version = '2.1.5'Check that you have the jcenter repository.
// Add Jcenter to your repositories if needed repositories { jcenter() }Pick one of your Koin dependency:
buildscript { repositories { jcenter() } dependencies { classpath "org.koin:koin-gradle-plugin:$koin_version" } } apply plugin: 'koin'// Koin for Kotlin implementation "org.koin:koin-core:$koin_version" // Koin extended & experimental features implementation "org.koin:koin-core-ext:$koin_version" // Koin for Unit tests testImplementation "org.koin:koin-test:$koin_version" // Koin for Java developers is now part of core // implementation "org.koin:koin-java:$koin_version"// Koin for Android implementation "org.koin:koin-android:$koin_version" // Koin Android Scope features implementation "org.koin:koin-android-scope:$koin_version" // Koin Android ViewModel features implementation "org.koin:koin-android-viewmodel:$koin_version" // Koin Android Experimental features implementation "org.koin:koin-android-ext:$koin_version"// Koin AndroidX Scope features implementation "org.koin:koin-androidx-scope:$koin_version" // Koin AndroidX ViewModel features implementation "org.koin:koin-androidx-viewmodel:$koin_version" // Koin AndroidX Fragment features implementation "org.koin:koin-androidx-fragment:$koin_version" // Koin AndroidX Experimental features implementation "org.koin:koin-androidx-ext:$koin_version"// Koin for Ktor Kotlin implementation "org.koin:koin-ktor:$koin_version"Write with the Koin DSL what you need to assemble:
// Given some classes class Controller(val service : BusinessService) class BusinessService() // just declare it val myModule = module { single { Controller(get()) } single { BusinessService() } } Use the startKoin() function to start Koin in your application.
In a Kotlin app:
fun main(vararg args : String) { // start Koin! startKoin { // your modules modules(myModule) } } In an Android app:
class MyApplication : Application() { override fun onCreate(){ super.onCreate() // start Koin! startKoin { // Android context androidContext(this@MyApplication) // modules modules(myModule) } } } - Dagger is dead. Long live Koin
- Testing a Koin application with KotlinTest
- Ready for Koin 2.0
- Migration from Dagger2 to Koin
- From Dagger to Koin, a step by step migration guide
- Koin in Feature Modules Project
- A brief look at Koin on Android
- Bye bye Dagger
- Testing with Koin
- Painless Android testing with Room & Koin
- Unlock your Android ViewModel power with Koin
- Using dependency injection with Koin
- Koin + Spark = ❤️
- Push SparkJava to the next level (Kotlin Weekly issue 73, DZone.com )
- When Koin met Ktor ... (Kotlin Weekly issue 72)
- Android Dependency Injection – Why we moved from Dagger 2 to Koin?
- Moving from Dagger to Koin - Simplify your Android development - (Kotlin Weekly issue 66 & Android Weekly issue 282)
- Kotlin Weekly #64
- Insert Koin for dependency injection
- Better dependency injection for Android
- Dependency Injection from zero to hero with Koin, Kotliners 2019 & Budapest, Hungary
- Dependency Injection from zero to hero with Koin, AndroidMakers 2019 & Paris, France
- Simplify your Android development with Koin - Mobilization @ Lodz, Poland
- Talking Kotlin - Dependency injection with Koin
- L'injection de poireaux avec Koin - AndroidLeaks ep42 (French)
- Insert Koin. Mobile Fest 2018, Kiev, Urkaine (Russian)
- Ready for Koin 2.0
- News from the trenches, What's next for Koin?
- Koin 1.0.0 Unleashed
- Opening Koin 1.0.0 Beta
- On the road to Koin 1.0
- Koin 0.9.2 — Maintenance fixes, new branding, roadmap for 1.0.0 & some other nice announces
- Koin 0.9.1 - Bug fixes & Improvments
- Koin 0.9.0 - Getting close to stable
- Unlock your Android ViewModel power with Koin
- koin 0.8.2 Improvements bugfixes and crash fix
- Koin release 0.8.0
This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
