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ę.

questionAnswers(3)

yourAnswerToTheQuestion