Guice: jak skonfigurować w tym przypadku @ Provides i @Singleton w module?
Mam metodę dostawcy w module z adnotacją@Provides
:
@Provides
public ChatServicePerformanceMonitor getChatServicePerfMon() {
...
}
i adnotowałem mojeChatServicePerformanceMonitor
z@Singleton
. W moim kodzie, gdzie używam tej instancji, nie mogę mieć guice „pasywnego” wstrzyknięcia go, z powodu używanej przeze mnie struktury, która konstruuje klasę zamykającą (nie używa Guice, więc jest to jedyny sposób, jaki znam aby uzyskać referencję):
chatServicePerfMon = injector.getInstance(ChatServicePerformanceMonitor.class);
Wygląda na to, że Guice nie szanuje@Singleton
adnotacja na moimChatServicePerformanceMonitor
klasa. Dostaję instancję dla każdego wywołania do injector.getInstance (ChatServicePerformanceMonitor.class).
Dodawanie@Singleton
do metody dostawcy wydaje się to naprawić:
@Provides @Singleton
public ChatServicePerformanceMonitor getChatServicePerfMon() {
...
}
Czy to jest oczekiwane zachowanie? Wydaje się@Singleton
na instancji powinno być wszystko, czego potrzebuję.