DI
KOtlin DEpendency INjection.
To construct a DI instance, simply use it's block constructor and define your bindings in it :
val di = DI {
bind<Dice>() with factory { sides: Int -> RandomDice(sides) }
bind<DataSource>() with singleton { SqliteDS.open("path/to/file") }
bind<Random>() with provider { SecureRandom() }
constant("answer") with "forty-two"
}Content copied to clipboard
Types
Link copied to clipboard
Base builder DSL interface that allows to define scoped and context bindings.
Link copied to clipboard
Allows for the DSL inside the block argument of the constructor of DI and DI.Module.
Link copied to clipboard
Exception thrown when there is a dependency loop.
Link copied to clipboard
data class Key<in C : Any, in A, out T : Any>( val contextType: TypeToken<in C>, val argType: TypeToken<in A>, val type: TypeToken<out T>, val tag: Any?)
Content copied to clipboard
In DI, each DIBinding is bound to a Key. A Key holds all information necessary to retrieve a factory (and therefore an instance).
Link copied to clipboard
Builder to create a DI object.
Link copied to clipboard
class NoResultException(val search: SearchSpecs, message: String) : RuntimeException
Content copied to clipboard
Exception thrown when searching for bindings and none could be found.
Link copied to clipboard
class NotFoundException(val key: DI.Key<*, *, *>, message: String) : RuntimeException
Content copied to clipboard
Exception thrown when asked for a dependency that cannot be found.
Link copied to clipboard
Exception thrown when there is an overriding error.