mi sono appena armeggiato con Google Guice per Iniezione di dipendenza e ho iniziato ad integrarlo nella mia applicazione esistente. Fin qui tutto bene. Ho molte classi che hanno bisogno, oltre alle loro dipendenze, di Stringhe, DataSource, eccetera. So che ci sono NamedBindings, ma in realtà non voglio creare un'annotazione per ogni semplice stringa che devo passare al costruttore per ogni classe. Quindi, c'è una cosa chiamata AssistedInject, che crea implementazioni Factory per me. Wow, ma devo ancora definire l'interfaccia della fabbrica. Thats bene per le classi che si dispone di dipendenze, ma per quanto riguarda questo esempio di classe:Iniezione di dipendenza con Guice: qualcosa che non è coperto da alcun tutorial
public class FooBarClass {
public FooBarClass(String name, String anotherOne) {
// Some stuff
}
}
Ci sono casi in cui sono in dubbio come utilizzare Guice o, più in generale, DELLA strada giusta. "Spesso sento: XYZ Framework è il nuovo new." Ma questo implicito che devo creare ogni istanza con il framework DI.
sola istanza è richiesta
Che cosa succede se ho bisogno di una sola istanza di questa classe? Questa classe non ha assolutamente dipendenze accanto a due stringhe. Pensa a un gancio di arresto che verrà instanciato una sola volta e passato alla JVM come mio gancio di arresto. Dovrei creare questa istanza con Guice? Mi sembra molto stupido, perché non c'è niente da iniettare, ma devo scrivere un'interfaccia factory per passare Guide entrambi i parametri e devo creare un'interfaccia per il mio FooBarClass per usare DI.
Più istanze sono tenuti
La stessa cosa vale per un caso in cui ho bisogno di più istanze di questa classe. Nessuna dipendenza, ma devo creare un po 'di codice boilerplate per non farci nulla. Questo mi sembra sbagliato.
Quindi, come dovrei usare DI e/o Guice?
Grazie mille!