C'è qualcosa che non capisco in giro: secondo quello che ho letto fino ad ora, dovrei usare l'iniettore solo nella mia classe bootstrap (in un'applicazione standalone questo sarebbe tipicamente nella main() metodo), come nell'esempio seguente (preso dalla documentazione Guice):Come evitare di avere injector.createInstance() dappertutto quando si usa guice?
public static void main(String[] args) {
/*
* Guice.createInjector() takes your Modules, and returns a new Injector
* instance. Most applications will call this method exactly once, in their
* main() method.
*/
Injector injector = Guice.createInjector(new BillingModule());
/*
* Now that we've got the injector, we can build objects.
*/
RealBillingService billingService = injector.getInstance(RealBillingService.class);
...
}
Ma cosa succede se non tutti gli oggetti che io abbia mai bisogno può essere creato durante l'avvio? Forse voglio rispondere ad alcune interazioni con l'utente quando l'applicazione è in esecuzione? Non devo tenere il mio iniettore da qualche parte (ad esempio come variabile statica) e quindi chiamare injector.getInstance (SomeInterface.class) quando ho bisogno di creare un nuovo oggetto?
Naturalmente la diffusione di chiamate a Injector.getInstance() in tutto il luogo sembra non essere desiderabile.
Cosa sto sbagliando qui?
Sì, sono completamente d'accordo. – Gamlor