我在尝试 @Singleton of Guice 时遇到了问题:
import com.google.inject.Singleton;
@Singleton
public class ConfigManager {
private String data;
public void setData(String data) {
this.data = data;
}
public String getData(){
return this.data;
}
public static void main(String[] args){
ConfigManager config1 = Guice.createInjector().getInstance(ConfigManager.class);
ConfigManager config2 = Guice.createInjector().getInstance(ConfigManager.class);
config1.setData("data");
System.out.println(config2.getData());
}
}
为什么这个简单的示例总是打印 null?
最佳答案
单例对于注入(inject)器来说是全局的,而不是对于 JVM 来说。您需要稍微调整一下您的代码:
Injector injector = Guice.createInjector();
ConfigManager config1 = injector.getInstance(ConfigManager.class);
ConfigManager config2 = injector.getInstance(ConfigManager.class);
关于java - 为什么我的@singleton 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1623698/