代码之家  ›  专栏  ›  技术社区  ›  eric2323223

为什么我的@singleton不工作?

  •  0
  • eric2323223  · 技术社区  · 16 年前

    我在尝试@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());
        }
    
    } 
    

    为什么这个简单的示例总是打印为空?

    1 回复  |  直到 16 年前
        1
  •  8
  •   Jesse Wilson    16 年前

    单例对注入器是全局的,而不是对JVM。您将希望稍微调整您的代码:

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