koin injection dependency dependency-injection dagger kotlin dagger-2

dependency injection - injection - Usando Kotlin con Daga



koin dependency injection (3)

Dagger se basa en el procesamiento de anotaciones, que aún no se admite en Kotlin, que yo sepa. Pero dicen, está planeado. Y mientras tanto, puede ampliar las clases de java con las dependencias de Dagger o probar un marco de inyección basado en la reflexión: Guice, Roboguice

¿Cuál es la mejor manera de usar Dagger para inyectar dependencias en clases, especialmente clases de constructor de argumento cero como Actividades, con Dagger? ¿Dagger 2 posiblemente traerá mejoras a la situación?

Gracias por adelantado.


Desde el lanzamiento de Kotlin M13 , se ha agregado especialmente una nueva propiedad para admitir la inyección de dependencia (como con Dagger 1 y 2) y otros marcos.

Se llama propiedad lateinit . Tomado de la documentación:

class Example { @Inject lateinit var bar: Bar }

En pocas palabras, la barra no tiene inicializadores, pero se declara como un tipo no nulo. Si intenta leerlo antes de la inicialización, se lanza una excepción.
De lo contrario, una vez que se inicializa con Dagger, se puede usar como una propiedad normal.

Todo está bien explicado en el documento de idioma y también puede consultar la publicación del blog relacionada con la versión M13 allí.


No estuve actualizando mi respuesta por un tiempo y se desactualizó. También noté aquí la nueva respuesta de @Ben que funciona para M13 / M14.

Decidí que sería mejor si redirigiera a todos los interesados ​​a mi proyecto de plantilla, que trato de mantener al día con las últimas versiones de Kotlin y Dagger 2. Kotlin + Daga 2 muestra

Estoy describiendo cómo inyectar objetos, incluyendo múltiples anotaciones, etc.