La risposta attualmente più votata a una domanda molto recente afferma che
DI containers are an "enterprise software" pattern, used when the object graph is very large and complex. I suspect that 95% of applications do not require it.
che è qualcosa con cui non sono assolutamente d'accordo. Forse ho sbagliato la terminologia, ma per me DI framework significa solo "qualcosa che collega i miei oggetti insieme". Mi manca qualcosa?
Sto utilizzando Guice anche per progetti molto piccoli (come 10 classi) al fine di semplificarli . Certo, è un file JAR da 400 kB, ma non è quello che mi interessa. Per un piccolo progetto non ho quasi mai bisogno di alcuna configurazione e l'unico "overhead" è l'aggiunta dell'annotazione @Inject
.
Quindi mi chiedo davvero, quale maggiore complessità fanno i quadri DI?
Aggiornamento che indirizza le risposte
In un progetto di classe 82, ho
- 32
@Inject
annotazioni - 15
@Singleton
e 1@ProvidedBy
annotazioni - 4 provider (tutti di cui avrei bisogno anche senza DI poiché sono le mie fabbriche)
- 1 modulo contenente una singola riga
- 0 righe XML !!!
Questo è tutto. Certo, è un piccolo progetto, ma esattamente questo era il mio punto. Il lavoro aggiuntivo era composto da poche parole piuttosto che da linee .
Uso esclusivamente l'iniezione del costruttore per ottenere oggetti "facili" immutabili. Ogni volta che appare una nuova dipendenza, aggiungo un campo finale, lascio che Lombok RequiredArgsConstructor si occupi della dichiarazione e lasci che Guice si prenda cura di di chiamarlo correttamente.