我有一个类xyz,它被注入到多个类中。我使用guice进行di。
class Xyz{
static int i =0;
public Xyz(){
System.out.println("###########creating instance = " + (++i));
}
}
class ManagedOne{
Xyx xyz;
public ManagedOne(Xyz xyz){
this.xyz = xyz;
}
}
class ManagedTwo{
Xyx xyz;
public ManagedTwo(Xyz xyz){
this.xyz = xyz;
}
}
圭斯
bind(Xyz.class).in(Singleton.class);
bind(ManageOne.class).in(Singleton.class);
bind(ManageTwo.class).in(Singleton.class);
现在,即使我删除了about绑定,我仍然看到guice正在创建xyz的单例示例。使用sysout进行验证。它只打印一个值为1的。这是默认行为吗?我以为违约是工厂。
guice会在两个管理器中注入相同的xyz示例吗?如果是,代码是什么 bind(Xyz.class).in(Singleton.class)
那是多余的吗?
请注意,我不使用 injector.getInstance(Xyz.class)
始终获取xyz的示例。相反,我是按照上面代码中显示的方式来做的
1条答案
按热度按时间i1icjdpr1#
我看不出有什么问题。
鉴于此
count
是static
,确保您的整个应用程序不会被调用两次,您没有几个注射器或类似的。甚至你不打电话new Xyz()
手工我一次做了两次测试。
Abc
未使用注解进行注解@Singleton
虽然Xyz
注解为@Singleton
.结果如下:
如果这不能回答你的问题,请做一个mcve,准确地展示你的问题,而不是含糊其辞地解释。