Quel est votre conseil? J'ai trouvé la solution la plus appropriée pour moi - garder les injecteurs et les modules dans les classes d'énumération. Avantages:Où conserver les injecteurs de guice?
- injecteurs et modules créés une fois,
- injecteurs peuvent être utilisés de différentes classes alors que l'application en cours d'exécution (non seulement d'amorçage),
- injecteurs conservés dans un endroit et peuvent être facilement trouvés.
Exemple:
import static ru.package.Modules.*;
public enum Injectors {
FOO_INJECTOR(BarModule.module()),
FOO2_INJECTOR(FOO_INJECTOR.injector(),
Bar2Module.module(), FooModule.module());
private final Injector m_injector;
Injectors (Module... modules) {
m_injector = Guice.createInjector(modules);
}
Injectors (Injector parentInjector, Module... modules) {
m_injector = parentInjector.createChildInjector(modules);
}
public Injector injector() {
return m_injector;
}
}
Ne faites pas cela. Cette stratégie a beaucoup de problèmes. Dans chaque exécution de votre programme, tous vos injecteurs seront créés, qu'ils soient nécessaires ou non. –