为什么有两个单独使用Google Guice依赖注入框架的实例

时间:2012-06-12 17:41:12

标签: java singleton guice

我在使用Google Guice作为MVC架构中的依赖注入框架的公司中进行开发。

系统使用Singleton模型。我们发现项目中有两个模型实例,这就是问题。

  • 我知道Singleton永远不是更好的方式,但我不是项目设计师。

  • Google Guice是唯一的模型初始化程序,因此没有 “新”。

  • Google Guice有时会通过字段注入和注入模型 有时在构造函数本身。

但是,该模型的范围只有一次。

绑定完成如下:

bind(Foo.class).to(FooImpl.class).in(Scopes.SINGLETON);

类本身不是具有私有构造函数的单例,而是所有。

如果只进行一次绑定并且没有新的绑定,Guice如何才能创建两个实例?场注入和构造函数注入是否会与单例冲突?

修改

我无法显示代码,但是初始化模块绑定了数千个其他Singleton类,并且没有问题所以这个模块确实正常工作。

1 个答案:

答案 0 :(得分:3)

这里的问题是绑定声明。

我们通过将绑定声明替换为:

来修复它
bind(FooImpl.class).in(Scopes.SINGLETON);
bind(Foo.class).to(FooImpl.class);