A small library allowing constructor dependency injection for applications using Kodein.
<dependency>
<groupId>pw.kmp</groupId>
<artifactId>kodeinject</artifactId>
<version>1.2.2</version>
</dependency>
compile "pw.kmp:kodeinject:1.2.2"
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.
val kodein = Kodein {
bind() from injectedSingleton<Application>()
}
Use injectedSingleton()
to cache the dependency instead of creating a new
instance for each access.
class Application(db: Database, cache: Cache?) {
// stuff goes here
}
Paramaters that are nullable will be set to null if they are unavailable upon 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.