2009-10-26 9 views
0

Guice의 @Singleton을 사용할 때 문제가 발생했습니다.@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()); 
    } 

} 

왜이 간단한 샘플은 항상 null을 출력합니까?

답변

8

싱글 톤은 인젝터에서 전역이며, JVM에서는 전역입니다. 코드를 조금씩 조정할 수도 있습니다.

Injector injector = Guice.createInjector(); 
ConfigManager config1 = injector.getInstance(ConfigManager.class); 
ConfigManager config2 = injector.getInstance(ConfigManager.class); 
관련 문제