2009-10-26 6 views
0

j'ai rencontré un problème lors de la tentative @Singleton de Guice:Pourquoi mon @singleton ne fonctionne pas?

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

} 

Pourquoi ce simple exemple toujours imprimer null?

Répondre

8

Les singletons sont globaux à l'injecteur, pas à la JVM. Vous voudrez modifier légèrement votre code:

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