kodeinject
A small library allowing constructor dependency injection for applications using Kodein.
Usage
Add dependency
Maven
<dependency>
<groupId>pw.kmpgroupId>
<artifactId>kodeinjectartifactId>
<version>1.2.2version>
dependency>
Gradle
compile "pw.kmp:kodeinject:1.2.2"
Injected
class Application(db: Database) {
// stuff goes here
}
val kodein = Kodein {
bind<Database>() with singleton { MongoDB("127.0.0.1", 27017) }
bind() from injected<Application>()
}
kodeinject
will automatically instantiate your injected()
classes using bindings from the Kodein container.
Singleton
val kodein = Kodein {
bind() from injectedSingleton<Application>()
}
Use injectedSingleton()
to cache the dependency instead of creating a new instance for each access.
Nullable
class Application(db: Database, cache: Cache?) {
// stuff goes here
}
Paramaters that are nullable will be set to null if they are unavailable upon injection.
Automatic Kodein injection
class Application(kodein: Kodein) {
// stuff goes here
}
Constructors requiring the Kodein
object will be injected with it by default, without the need to create a binding.