我有一个模块中带有@Provides
注解的提供者方法:
@Provides
public ChatServicePerformanceMonitor getChatServicePerfMon() {
...
}
我已经用@Singleton
给我的ChatServicePerformanceMonitor
添加了注释。在我的代码中,当我使用这个实例时,由于我使用的框架正在构造封闭类(它不使用Guice,所以这是我知道的唯一方法来获取引用),我无法让guice “被动”注入它:
chatServicePerfMon = injector.getInstance(ChatServicePerformanceMonitor.class);
似乎Guice没有尊重我的ChatServicePerformanceMonitor类上的@Singleton注释。每次调用injector.getInstance(ChatServicePerformanceMonitor.class)都会获得一个实例。将@Singleton添加到提供程序方法似乎可以解决这个问题:
@Provides @Singleton
public ChatServicePerformanceMonitor getChatServicePerfMon() {
...
}
这是期望的行为吗?似乎只需要在实例上使用 @Singleton
就足够了。
ChatServicePerformanceMonitor
的?如果 Guice 没有在你的getChatServicePerfMon
方法中创建它,那么@Singleton
将会被忽略。 - condit