La respuesta más votada actualmente a una pregunta muy reciente establece que
Los contenedores DI son un patrón de "software empresarial", que se utiliza cuando el gráfico de objetos es muy grande y complejo. Sospecho que el 95% de las aplicaciones no lo requieren.
que es algo con lo que no estoy de acuerdo. Tal vez tengo la terminología equivocada, pero para mí el marco DI significa simplemente "algo que conecta mis objetos". ¿Me estoy perdiendo de algo?
Estoy usando Guice incluso para proyectos realmente pequeños (como 10 clases) para simplificarlos . Claro, es un archivo JAR de 400 kB, pero esto no es lo que me importa. Para un proyecto pequeño, casi nunca necesito ninguna configuración y la única "sobrecarga" es agregar la @Inject
anotación.
Entonces realmente me pregunto, ¿qué complejidad adicional causan los marcos DI?
Actualización abordando las respuestas
En un proyecto de 82 clases, tengo
- 32
@Inject
anotaciones - 15
@Singleton
y 1@ProvidedBy
anotaciones - 4 proveedores (todos los cuales necesitaría también sin DI ya que son mis fábricas)
- 1 módulo que contiene una sola línea
- 0 líneas XML !!!
Eso es todo. Claro, es un proyecto pequeño, pero exactamente este era mi punto. El trabajo adicional consistió en unas pocas palabras en lugar de líneas .
Estoy usando únicamente la inyección del constructor para obtener objetos inmutables "fáciles". Cada vez que un nuevo aparece de dependencia, que añaden un campo final, vamos a Lombok RequiredArgsConstructor cuidar de la declaración, y dejar que Guice se encargue de llamar correctamente.