java - 为什么我的@singleton 不起作用?

标签 java singleton guice

我在尝试 @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?

最佳答案

单例对于注入(inject)器来说是全局的,而不是对于 JVM 来说。您需要稍微调整一下您的代码:

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

关于java - 为什么我的@singleton 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1623698/

相关文章:

java - 使数据模型类可序列化

java - 将 Netbeans JavaFx 项目移植到 Eclipse

C++ 单例与全局静态对象

iphone - UIViewController 作为单例

java - Guice:根据谁得到它注入(inject)不同的实现?

java - 提供者可以在不同的实例之间进行选择吗

java - 正则表达式仅允许数字、字母、空格和连字符 - Java

java - 是否可以将 Eclipse 中当前打开的文件的完整路径传递给外部工具?

java - Singleton 什么时候不能作为 Singleton 工作?

java - 具有逻辑的 Guice AssistedInjection Factory