- CORE
- Documentation improvements (thanks to the contributors!).
- Deprecation cycle
- COMPOSE
- JB Compose 1.1.0 Alpha5
- Introduce
rememberDI
Composable function - Fix
rememberX
functions` behavior - Update documentation
- COMPOSE
- JB Compose beta5
- Enable Web target
- CORE
- Gradle 7.2
- AGP 7
- Kotlin 1.5.31
- Apple Silicon support
- COMPOSE
- JB Compose beta1
- Android : remember ViewModel helper
-
CORE
- Kotlin 1.5.21
- Documentation
-
ANDROID
- 2 new modules have been created to support ViewModel retrieval with ease (thanks to @carltonwhitehead for his contribution).
- kodein-di-framework-android-x-viewmodel : Injection and retrieval of plain View Models with by viewModel() delegate.
- kodein-di-framework-android-x-viewmodel-savedstate : Injection and retrieval of View Models with SavedStateHandle with by viewModelWithSavedStateHandle() delegate.
- 2 new modules have been created to support ViewModel retrieval with ease (thanks to @carltonwhitehead for his contribution).
-
COMPOSE:
kodein-di-framework-compose
module is now align with the stable version of Compose compiler (compatible with Kotlin 1.5.21) with improvements
- CORE:
- Kotlin 1.5
- Kodein-Type 1.7.1
- Thanks to @eygraber for the heavy investigation #309
- Documentation
- CORE
- Direct binding by adding
bind(tag: Any?, overrides: Boolean?, createBinding: () -> DIBinding)
bind { singleton { Person("Romain") } }
is equivalent tobind() from singleton { Person("Romain") }
bind<IPerson> { singleton { Person("Romain") } }
is equivalent tobind<IPerson>() with singleton { Person("Romain") }
bind { scoped(SessionScope).singleton { Person("Romain") } }
is equivalent tobind() with scoped(SessionScope).singleton { Person("Romain") }
- etc.
- Simplified binding APIs
bindFactory
/bindProvider
/bindSingleton
/bindMultiton
/bindInstance
/bindConstant
bindSingleton { Person("Romain") }
is equivalent tobind() from singleton { Person("Romain") }
bindSingleton<IPerson> { Person("Romain") }
is equivalent tobind<IPerson>() with singleton { Person("Romain") }
- etc.
- Documentation
- Direct binding by adding
- FRAMEWORK
- Adding Compose support for both Android (Jetpack) and Desktop (JetBrains).
- CORE
- Kotlin 1.4.31
- Maven Central publication
- CORE
- Enable new JS IR backend
- CORE
- Kotlin 1.4.30
- Documentation
- CORE
- Kotlin 1.4.20
- Fix memory leak with DI context
- Context finder and translator can now access DI container's bindings
- Kodein-Type 1.4 + other dependencies
-
DOCUMENTATION
- New documentation format https://docs.kodein.org/kodein-di/
- Split full documentation into chapters
- New documentation format https://docs.kodein.org/kodein-di/
-
CORE
- Kotlin 1.4.0
- Explicit public API mode
- Fixed possible memory leak with DI context
- Deprecation cycle
-
BUILD
- Gradle 6.5.1
- New Internal Gradle Plugin
- New snapshot workflow
-
DOCUMENTATION
- Updated http://kodein.org/Kodein-DI/
- New type system
- Module refactoring
- Code refactoring
- Migration from version 6 to 7: http://kodein.org/Kodein-DI/?7.0/migration-6to7
- Updated http://kodein.org/Kodein-DI/
-
CORE
- Modules refactoring:
org.kodein.di.generic-jvm
/org.kodein.di.erased
combined intoorg.kodein.di
- New type system with
typeOf
to handle generics, for non JVM targets only. - Package deprecation:
org.kodein.di.generic
,org.kodein.di.erased
. - Internals: non nullable context types / test re-organization / fixes
- Deprecation cycle
- Modules refactoring:
-
FRAMEWORKS
- Android / Ktor / TornadoFX : Migration from 6 to 7
-
DEMOS
- Migrating the Kodein-DI samples projects from 6 to 7
-
BUILD
- Gradle 6.3
- New Internal Gradle Plugin
- Github Actions
- CORE
- Kotlin
1.3.72
- Kotlin
- CORE
- Kotlin
1.3.71
- Kotlin
- CORE
- Kotlin
1.3.70
- Kotlin
- CORE
- tvOS and watchOS compatibility
- CORE
- Fix build issue for Kotlin/Native projects
- CORE
- Depreciate multi-args factories, we now recommend to use data classes instead
- Kotlin
1.3.60
- Documentation
- CORE
- Hotfix on base class injection, failing on automatic context (#254)
- CORE
- Allowing to use
importOnce
over extended modules - Kotlin
1.3.50
- Allowing to use
- JVM
- Set the
JDK8
as default target
- Set the
- KTOR
- Route.controller extension functions to be able to install KodeinController routes inside the Ktor routing system.
- KodeinControllerFeature depreciation as the new extensions will better cover the use case
- DEMOS
- The samples projects have been moved. They are in a separate repo
- CI/CD
- Automate builds on Travis CI
- MISC
- Move to a more traditional branching model with:
master
as defaultstable
for releaseX.X
for versioning
- Move to a more traditional branching model with:
- BUILD
- Fix build compatiblity for JVM targets
- CORE
- Hotfix on false positive bindings (#216)
- JVM
- As we build Kodein with
JDK12
, the JVM librairies no longer throw exception when used with Gradle > 5.2, by bringing target compatibility onJDK8
.
- As we build Kodein with
- ANDROID
- the function
closestKodein
aliaseskodein
for import conflicts, in moduleskodein-di-framework-android-support
andkodein-di-framework-android-x
.
- the function
-
TORNADOFX
- New framework module for TornadoFx integration thanks to the huge work of Romain Boisselle! See documentation.
-
CORE
importAll
allows to import multiple modules at once- Kotlin
1.3.40
- Named retrieval allows
val name: String by named.instance()
andval name: String by constant()
- If
fullDescriptionOnError
is true, all Kodein errors will include full type names. - The
externalSource
var is now deprecated in favour of theexternalSources
mutable list.
-
NATIVE
- Updated to Gradle Module schema 1.0. Gradle 5.3.0 minimum is required!
-
ANDROID
- the function
closestKodein
aliaseskodein
for import conflicts.
- the function
-
KTOR
- the function
closestKodein
aliaseskodein
for import conflicts.
- the function
- ANDROID
- Fixed a regression to ActivityRetainedScope
-
CORE
- Kotlin 1.3.30
- Fixed a bug in the JVM specific code that prevented a generic interface from being retrieved when a concrete class was bound.
bind() from Binding<Unit>
is now forbidden. Binding specifically the Unit type withbind<Unit>() with Binding<Unit>
is allowed (although I cannot see why someone would use it!).
-
KTOR
- New framework module for Ktor integration thanks to the huge work of Romain Boisselle! See documentation.
-
CORE
- Kotlin 1.3.20
- Fixed a bug that made a cached "hit" in the container loose its translator for future access (Thanks to Charles Julian Knight).
- Kodein.Lazy supports both
by
and=
, which makes it easier to use (most*Lazy
classes in Kotlin are supposed to be used withby
). - Support for lazy contexts via
on { context }.instance()
or viaoverride val kodeinContext = kcontext { context }
.
-
MULTIPLATFORM
- Gradle 4.10 & Gradle Metadata 0.4 by default.
- LGM versions are dropped since they are not needed anymore.
-
ANDROID
- Fixed a bug that may duplicate the underlying fragment when using
retainedKodein
(Thanks to Charles Julian Knight). closestKodein
is renamedkodein
, which is easier to read & understand, and do not require users to understand multi-layering.- Introducing
subKodein
andretainedSubKodein
that makes multi-layering easier. - Official support for Android's
ViewModel
classe with it's ownkodein
accessor & documentation tips. androidModule
is renamed toandroidCoreModule
to emphasize the fact that one should rather useandroidXModule
orandroidSupportModule
.- Android specific context translators can be accessed outside of the android modules.
- Fixed a bug that may duplicate the underlying fragment when using
-
INTERNAL
KodeinContext
is now an interface.
-
CORE
- Fixed context translator & finder "collision".
- Improved multi-theading.
-
ANDROID
- Version bump.
-
DEPLOYMENT
- Fixed POM dependencies & module file uploads.
-
CORE
- Kotlin 1.3.0
- Simplified
Scope
interface - Introducing context translators & context finders
- Introducing sub scopes
-
NATIVE
- New multiplatform gradle plugin
-
CORE
- Introducing non-synced singletons & multitons (can be used with the
sync = false
parameter).
- Introducing non-synced singletons & multitons (can be used with the
-
NATIVE
- New
kotlin-platform-native
plugin
- New
-
ANDROID
- Fixed a memory leak in
AndroidLifecycleScope
(Thanks to Eliezer Graber). - Fixed a crash when binding arrays.
- Fixed a memory leak in
-
INTERNALS
- Builders are interfaces
-
CORE
- Named Modules cannot be imported more than once.
- Introducing
importOnce
that allows to import a named module if it has not already been imported: see documentation. - Introducing
newScopeRegistry
that creates either a single or a multime item registry.
-
ANDROID
- Android support has been split between
kodein-di-framework-android-core
,kodein-di-framework-android-support
(for the Android Support library) andkodein-di-framework-android-x
(for the AndroidX library): see documentation.
- Android support has been split between
- ANDROID
- Fixed
ActivityRetainedScope
NullPointerException regression.
- Fixed
-
CORE
- BREAKING CHANGE: updated the
ScopeRegistry
andScope
interfaces to get anA
generic argument that allows to create scopes specialized for a type of factory argument. - Introduced the
ScopeCloseable
interface that allows singletons / multitons objetcs to be closed when they are removed from the scope: see documentation. - The
SingleItemScopeRegistry
class now allows for key change, which closes the previous value and keeps the new. This allows forscoped(SingleItemScopeRegistry<Any?>()).multiton
: see documentation. - Unnamed module creation deprecated (in favour of named modules).
- BREAKING CHANGE: updated the
-
ANDROID
activityRetainedScope
deprecated in favour ofActivityRetainedScope
.ActivityRetainedScope
is compatible withScopeCloseable
.androidScope
deprecated in favour ofAndroidComponentsWeakScope
.- Introducing
AndroidLifecycleScope
: a scope that uses LifecycleOwner components to close properly close instances.
-
FRAMEWORK
- The Kodein-DI library is officially part of the in-progress Kodein Framework!
-
GRADLE
- Project is entirely configured with Gradle Kotlin DSL
- Project relies configuration relies heavily on
kodein-internal-gradle-plugin
which abstracts the configuration of all Kodein Framework components.
-
CORE
- Added
factoryX
functions to enable to directly retrieve a multi-argument function(A1, A2) -> T
when using multi-argument bindings.
- Added
-
ANDROID * Corrected a stack overflow error when using generic types on SDK 19 and lower
-
NATIVE
- Using new native distribution model to allow gradle dependency retrieval
-
DOCUMENTATION
- Fragmented documentation: http://kodein.org/Kodein-DI/
- Getting started: http://kodein.org/Kodein-DI/?5.0/getting-started
- Migration from version 4 to 5: http://kodein.org/Kodein-DI/?5.0/migration-4to5
-
CORE
- Package change:
org.kodein.di
,org.kodein.di.generic
,org.kodein.di.erased
. - Everything is lazy by default.
- Distribution via Bintray's JCenter.
- Compatible with Kotlin/Native (Huge thanks to Nikolay Igotti and his amazing Kotlin/Native team!).
- Support for subtype bindings: see documentation.
- Ability to retrieve
allInstances
,allProviders
orallFactories
that match subtypes of a given type. - Support for multi-argument factories & multiton.
- Changed the
extend
semantic to manage copy of state-holding bindings. see documentation. - Complete rewrite of custom scopes.
- Better recursion error messages.
- Better currying syntax:
kodein.instance(arg = whatever)
. - Injector has been replaced with
KodeinTrigger
andLateInitKodein
, each taking a part of the responsibility. - Introducing
LateInitKodein
. scopeSingleton
andrefSingleton
are now options ofsingleton
. Same goes formultiton
.- Support for non state-holding bindings to access the
receiver
. - Support for an external source that will be queried when Kodein has no answer.
- Package change:
-
ANDROID
- Full rewrite of the android components, effectively removing them, replacing them with a much lighter system. See documentation
-
INTERNALS
- Full rewrite of the retrieval engine, introducing
KodeinTree
to select the matching binding according to a query.
- Full rewrite of the retrieval engine, introducing
-
CORE
- Kotlin 1.1.3
- Introducing
CompositeTypeToken
,erasedComp1
,erasedComp2
anderasedComp3
to describe generic types in an erased-only environment. - Introducing the
SetBinding
binding for Set multi-binding.
-
ANDROID
KodeinSharedPreferencesInfo
is now outside of autoAndroidModule.- Added
KodeinPreferenceFragment
.
-
INTERNALS
JxInjector
now delegates to the internalJxInjectorContainer
.- Refactored
TypeToken
-
FEATURES
- Kotlin 1.1.2-4.
- The
generic
function is now 40% faster.
-
BUG FIX
- Kodein JS now intercept type reflection failure (which happens when reflecting on primitive types on older versions of Kotlin).
-
REMOVAL
- Removed the
sequence
coroutine binder (too experimental).
- Removed the
-
FEATURES
- Kotlin 1.1.0.
- Javascript modules (
kodein-js
&kodein-js-conf
). Uses the erased methods as JS does not support generic type reflection. - The Kodein binding DSL is now protected with
@DslMarker
to prevent weird things from happenning. - New binding factory:
sequence
which uses coroutines to bind a sequence.
-
BREAKING CHANGES
- Removed all
erased*
andgeneric*
methods. Each core method now takes type parameters that are obtained with eithergeneric()
orerased()
. - Functions and classes that were part of the internal system, but declared public (because inline function references) are now truly internal.
- Removed all deprecated API: new major version means clean slate.
- Removed all
-
STRUCTURE CHANGES
- Every type is now represented with a
TypeToken<T>
instead of aType
.
- Every type is now represented with a
-
BUG FIX
- issue #61: FullTypeStringer failed on a type with no package.
- BUG FIX
- issue #61: FullTypeStringer failed on a type with no package.
- FEATURES
- New module:
kodein-jxinject
which allows to gradually move from ajavax.inject.*
java injector. - New sugar syntax
kodein.newInstance {}
.
- New module:
-
ANDROID FIXES
- Initialize the injector before super.onCreate in components (Thanks to Eliezer Graber). This may be a breaking change.
- In a fragment, you can now retreive a Layout Inflater either via a service or using the tag ACTIVITY_LAYOUT_INFLATER (Thanks to Eliezer Graber).
- FragmentInjector injects from parent fragment when present (Thanks to Corey Downing).
- Enforce that an KodeinFragment must be used inside a KodeinActivity (Thanks to Eliezer Graber & Corey Downing).
-
FEATURES
- Detect recursive initialization in configurable module (Thanks to Francesco Vasco).
- Added
refSingleton
which enables a singleton managed by a reference object (suggested by Francesco Vasco).. - Added
multiton
which is like asingleton
but whose uniqueness is defined by a parameter (suggested by Francesco Vasco).
-
DEPRECATION
threadSingleton {}
is deprecated in favour ofrefSingleton(threadLocal) {}
.
-
STRUCTURE CHANGES
- Better synchronization.
- Removed
CFactory
andCProvider
. - In
Factory
,factoryName
is now a function, which forces computation only when needed.
No changes from 3.2.0-beta3
-
FEATURES
- You can use
overriddenInstance
in an overriding binding to access the instance retrieved by the overridden binding. - For Android, added the
autoAndroidModule
: a module that allows for automatic retrieval of Android services, without providing aContext
(Thanks to Eliezer Graber). - For Android, added Android component classes that makes it easier to bootstrap Kodein with Android (Thanks to Eliezer Graber).
- For Android, all services accessible via
Context.*_SERVICE
are now available in the Android modules (up to AndroidN_MR2
).
- You can use
-
STRUCTURE CHANGES
Curried*
extension methods (introduced in beta2) don't need theA
(argument type) generic parameter.
-
FEATURES
- Every function that do generic type reflection is renamed
generic*
and has anerased*
counterpart. - All functions are now inside the
kodein-core
module. Thekodein
module defines extension functions that alias to the "generic*" functions by default. - The
kodein-erased
module is the same as thekodein
module, but with functions that alias to theerased*
functions.
- Every function that do generic type reflection is renamed
-
DEPRECATION
- Removed methods that were deprecated in 3.1.0
- For Android, [scope]ScopedSingleton methods are deprecated (for example,
contextScopedSingleton {}
is deprecated in favour ofscopedSingleton(androidContextScope) {}
) typeToken
has been renamed togeneric
. ThetypeToken
function still exists but is deprecated.
-
STRUCTURE CHANGES
- The
bind
methods and theirwith
associates are now extension functions and need to be imported. - Curried retrieval methods such as the
instance
inwith(whatever).instance()
are now extension functions and need to be imported.
- The
-
FEATURES
- Android: Added more scopes for
Fragment
,Service
andBoradcastReceiver
(Thanks to Eliezer Graber). ConfigurableKodein
objects that are declaredmutable
can now be mutated withaddConfig
,addImport
andaddExtend
.- Factories that take a class as parameter now work with their child classes without upcast (eg: you can retrieve
with
with(obj).instance()
instead ofwith(obj as Type).instance()
)
- Android: Added more scopes for
-
FIX
- Android module: The
KeyguardManager
andWallpaperService
are now properly injected. (Thanks to Eliezer Graber).
- Android module: The
-
DEPRECATION
- In
ConfigurableKodein
, allmutate*
methods are deprecated (in favour of their regular counterparts).
- In
-
INTERNAL
- Better type display (Thanks to Alexander Udalov).
- The Android demo project is now a module (Thanks to Eliezer Graber).
-
FEATURES
- Introducing
ConfigurableKodein
in thekodein-conf
module that can be configured then used for retrieval. - A
ConfigurableKodein
object can be mutable (if itsmutable
property is true). Please be careful with this! - The Android module contains a factory for default
SharedPreferences
.
- Introducing
-
BETA FEATURE CHANGES
Kodein.global
is now in thekodein-conf
module.
-
FEATURES
- Lazy retrieval with
kodein.lazy.*
. - Currying with lazy properties:
with().lazy.*
. - You can add config other then imports or extend on global Kodein with
Kodein.global.addConfig
. Kodein.Lazy
accepts aallowSilentOverride
parameter.
- Lazy retrieval with
-
BREAKING CHANGES
lazyKodein
is renamedKodein.Lazy
.
-
FEATURES
- Kodein's source code & API is now fully documented!
- You can now bind a
Kodein.Bind
directly withcontainer.bind(bind)
. lazyKodein {...}
now returns aLazyKodein
object, which can be used either as a lazy property or to inject lazy properties.- You can use
with(() -> A)
instead ofwith(A)
for currying if you don't have access yet to the argument.
-
BREAKING CHANGES
instanceForFactory
and friends, which were not documented, are removed..toProvider(A)
is replaced by.toProvider(() -> A)
. You can easily call it.toProvider { arg }
. This is because, sometimes, you don't have access to the parameter when you are declaring the injection (for example, in Android, a Fragment don't have access to a context Activity before being attached).- Every factory currying should only use
with
. - Constant bindings are now resolved using compile time type. To use the real type of the object (not really
recommended), use
typed.constant("tag").with(value, value.javaClass)
.
-
BETA FEATURE CHANGES
instanceForClass
and friends are replaced bywithClass
and friends.T.withClass(Kodein)
is replaced byKodein.withClassOf(T)
.- Scopes do not get the key to retrieve the registry.
- Android's
T.withContext
is replaced bywithContext(T)
. This is because of a Kotlin's bug.
-
INTERNAL
KodeinParameterizedType
is renamedKodeinWrappedType
.- GenericArrayTypes are now also protected by
KodeinWrappedType
. - Better
hashCode
andequals
in KodeinWrappedType. TKodein
is now a class (not an interface), which allows the use of@JvmOverloads
.
-
FEATURES
*OrNull
functions everywhere
-
BREAKING CHANGES
- Android's
KodeinApplication
is removed in favor ofKodeinAware
.
- Android's
-
BETA FEATURE CHANGES
- In
Kodein.Builder
, separation of typed & container API InsideKodein.Builder
.bind(type) with ...
is move totyped.bind(type) with ...
.
- In
-
FEATURES
kodein.container.bindings.description
now uses simple type names, which makes it easier to read. You can usekodein.container.bindings.fullDescription
to show full type names.- Both descriptions now print type names in a "kotlin-esque" way. Because Kodein does not depends on
kotlin-reflect
, it uses javaType
objects that do not contains nullability informations. As such, the type display does not include nullability. Still, it's easier to read. - Kotlin
1.0.3
-
BREAKING CHANGES
- Scopes are no more (weird) functions but object implementing the
Scope
orAutoScope
interfaces. - Android's
ActivityScopeLifecycleManager
is nowactivityScope.lifecycleManager
.
- Scopes are no more (weird) functions but object implementing the
-
BETA FEATURE CHANGES
typeToken
won't throw an exception when used with aTypeVariable
type argument, however, the same exception will still be thrown at binding, whether or not using the inline function,typeToken
or a simple type. In other words, if you try to bind any type that contains aTypeVariable
type argument,Kodein
will throw an exception.
-
INTERNAL
- Android's
activityScope
is now an object.
- Android's
-
FEATURES
KodeinInjected
can usekodein()
instead ofinjector.kodein()
.- Android
instanceForContext
that works exactly likeinstanceForClass
, but for aContext
. - Android module, wisely named
androidModule
that provides a lot of factories with aContext
arguments (seeAndroidModule.kt
).
-
BREAKING CHANGES
typeToken
(and thereforeTypeReference
) will throw an exception when build with aTypeVariable
type argument. This is to prevent "accidental" binding of a type with TypeVariable which will be later impossible to retrieve.
-
BETA FEATURE CHANGES
instanceForClass
uses JavaClass<*>
andinstanceForKClass
uses KotlinKClass<*>
.
-
BREAKING CHANGES
JKodein
is replaced byTKodein
which is meant to use by both Kotlin & Java.TKodein
allows you to access a type consistent API withoutinline
methods. Each method can be used withType
,TypeToken
, orClass
. To access aTKodein
, simply usekodein.typed
.- The
typeToken
function now returns aTypeToken
interface. This allows to keep type consistency & checking whileType
objects. If you were usingval t = typeToken<T>()
in Kodein 2, the replacement is simplyval t = typeToken<T>().type
. kodein.bindingsDescription
becomeskodein.container.bindings.description
.kodein.registeredBindings
becomeskodein.container.bindings
.- All
inline
functions that usereified
to get the type are now extension functions, which means that they need to be imported! Your code will be all red until you resolve those import. Don't panic! The API itself has not changed, just its imports.
-
FEATURES
- Introducing
kodein.container
which enables you to query the Kodein container directly withKodein.Key
orKodein.Bind
objects. kodein.container.bindings
now gives aMap<Kodein.Key, Factory<*, *>>
. Which means that you can do all sorts of introspection and debug (like know which types are bounds to which factories, etc.). To help you with those tasks, several extension functions are proposed to thisMap
(in the filebindings.kt
).- Better bindings description: now displays the bound type and the created (real) type.
- Introducing the
KodeinAware
andKodeinInjected
interfaces. If a class implements one of those interfaces, the injection feels "native":instance()
instead ofkodein.instance()
. - Introducing
instanceForClass()
andproviderForClass()
: those methods can be passed aKodein
orKodeinInjector
object to inject an instance by using a factory that takes aKClass<*>
as parameter. Those functions can be used without parameter on aKodeinAware
orKodeinInjected
class (which is where they reach their full potential!). - Introducing
Kodein.global
which is a global Kodein instance for all. It is on its module and is not proposed by default. To use it, you must declare the dependencyorg.kodein:kodein-global:3.0.+
. You can add modules to it withKodein.global.addImport(module)
. After that, you can useKodein.global
as a regular Kodein object. Be aware that once you have injected / retrieved the first value withKodein.global
, then adding modules to it will throw an exception. - When using
Kodein.global
, you can use theKodeinGlobalAware
interface, which enables you all the goodness ofKodeinAware
, but usingKodein.global
, and without any config. - Kotlin
1.0.2-1
- Introducing
-
INTERNAL
- All providers & factories are represented by their classes.
Kodein
,TKodein
andKodeinContainer
are now very simple interfaces, which enables easy wrapping.
- Eager singletons: ask kodein to instanciate the singleton object as soon as kodein is ready.
KodeinInjector
is now thread safe.- The
KodeinInjector.onInjected
callback is directly called if the injector has already been injected. - Gradle
2.13
- Overriding exceptions now print the affected key
- New syntax for binding without specifying the type:
bind() from scope
- Kotlin
1.0.2
. - Overriding restrictions and policies (overrides must now be explicit).
- Scoped singleton system.
- Android Activity scope binding syntax.
*
kodein.with
that makes it easier to deal with factory bindings (better thantoProvider
andtoInstance
). - Factories arguments can be nullable.
- Kotlin
1.0.0
.
- Kotlin
1.0.0-rc-1036
.
- Kotlin
1.0.0-beta-4584
KodeinInjector
can inject theKodein
object.KodeinInjector
has aonInjected
callback.- Android:
lazyKodeinFromApp
andappKodein
support forView
,AbstractThreadedSyncAdapter
andLoader
.
- Container extension: allows to
import
a kodein object's binding into another kodein object.
- Kotlin
1.0.0-beta-1038