Dependency injection 如何在类的任何地方都获得相同的实例';在对象内部使用的

Dependency injection 如何在类的任何地方都获得相同的实例';在对象内部使用的,dependency-injection,guice,Dependency Injection,Guice,比问题更清楚一点。我希望在对象内部使用类的任何地方都能得到相同的类实例。我在整个项目中都在使用GoogleGuice。这里有一个更好的例子来解释 @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 H

比问题更清楚一点。我希望在对象内部使用类的任何地方都能得到相同的类实例。我在整个项目中都在使用GoogleGuice。这里有一个更好的例子来解释

@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;
    }
}
@Singleton A类{
C C;
D;
@注入公共A(C、C、D){
这个.c=c;
这个。d=d;
}
}
B类{
Map hashmap=新hashmap();
公共字符串getInfo(整数){
返回hashmap.get(number);
}
}
@单亲C类{
乙级;;
@注入公共C(B){
这个.b=b;
}
}
@D类独生子女{
乙级;;
@注入公共D(B){
这个.b=b;
}
}

因此,每次创建一个新的
a
。我希望
A
C
D
共享相同的
B
,但我不希望所有
A
共享一个
B
。另外,
C
D
也被注入到构造函数中,A是一个单例

您必须定义自己的范围

要做到这一点,请阅读Guice wiki上的页面