您的建議是什麼?何處保持guice噴射器?
我發現最適合我的解決方案 - 保持枚舉類中的注入器和模塊。 優點:
- 噴射器和創建一次模塊,
- 噴射器可以從不同的類,同時運行的應用程序中使用(不僅在自舉),
- 噴射器保持在一個位置,可以很容易找到。
例子:
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;
}
}
不要這樣做。這個策略有很多問題。在你的程序的每一次執行中,所有的注射器都將被創建,無論它們是否需要。 – 2010-02-01 15:59:59