@singletonが機能しないのはなぜですか?
質問
@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が出力されるのはなぜですか?
解決
シングルトンは、JVMではなくインジェクターに対してグローバルです。コードを微調整したくなるでしょう:
Injector injector = Guice.createInjector();
ConfigManager config1 = injector.getInstance(ConfigManager.class);
ConfigManager config2 = injector.getInstance(ConfigManager.class);
所属していません StackOverflow