我在使用Google Guice作为MVC架构中的依赖注入框架的公司中进行开发。
系统使用Singleton模型。我们发现项目中有两个模型实例,这就是问题。
我知道Singleton永远不是更好的方式,但我不是项目设计师。
Google Guice是唯一的模型初始化程序,因此没有 “新”。
Google Guice有时会通过字段注入和注入模型 有时在构造函数本身。
但是,该模型的范围只有一次。
绑定完成如下:
bind(Foo.class).to(FooImpl.class).in(Scopes.SINGLETON);
类本身不是具有私有构造函数的单例,而是所有。
如果只进行一次绑定并且没有新的绑定,Guice如何才能创建两个实例?场注入和构造函数注入是否会与单例冲突?
修改
我无法显示代码,但是初始化模块绑定了数千个其他Singleton类,并且没有问题所以这个模块确实正常工作。
答案 0 :(得分:3)
这里的问题是绑定声明。
我们通过将绑定声明替换为:
来修复它bind(FooImpl.class).in(Scopes.SINGLETON);
bind(Foo.class).to(FooImpl.class);