【问题标题】:How to get the same instance of a class everywhere it's used inside the object如何在对象内部使用的任何地方获取类的相同实例
【发布时间】:2017-02-10 06:47:08
【问题描述】:

比问题清楚一点。我想在对象内部使用该类的任何地方都获得该类的相同实例。我在整个项目中使用谷歌 guice。这是一个更好地解释的例子。

@Singleton class A {
    C c;
    D d;

    @Inject public A(C c, D d){
        this.c = c;
        this.d = d;
    }

}

class B {
    Map<Integer,String> hashmap = new Hashmap<>();

    public String getInfo(Integer number){
        return hashmap.get(number);
    }
}

@Singleton class C {
    Class B; 
    @Inject public C( B b){
        this.b = b;
    }
}

@Singleton class D {
    Class B; 
    @Inject public D(B b){
        this.b = b;
    }
}

所以每次创建一个新的A。我希望 ACD 共享相同的 B ,但我不希望所有 A 共享一个 BCD 也被注入到构造函数中,并且 A 是一个单例。

【问题讨论】:

    标签: dependency-injection guice


    【解决方案1】:

    您必须定义自己的范围。

    为此,请阅读 Guice wiki 上的 Custom Scopes 页面。

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      相关资源
      最近更新 更多