2009-10-26 133 views
0

我在嘗試@Singleton of Guice時遇到了一個問題:爲什麼我的@singleton不起作用?

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()); 
    } 

} 

爲什麼這個簡單的樣本總是打印空?

回答

8

對於注入器而言,單例是全局的,而不是JVM。你會想稍微調整你的代碼:

Injector injector = Guice.createInjector(); 
ConfigManager config1 = injector.getInstance(ConfigManager.class); 
ConfigManager config2 = injector.getInstance(ConfigManager.class);