我有一个单例类定义为:
@Singleton
class MySingletonClass{
....
}
我有另一个使用此单例类的类,但必须使用 new 运算符创建该类。因此我不能使用构造函数注入(inject)或setter注入(inject)等。
class MyClass {
public void method() {
// Uses instnace of MySingletonClass
}
}
我当然可以将其实例传递到 MyClass 的构造函数中,但从我的程序上下文来看,它并不是一个很好的设计。
另一个解决方案是为 MySingletonClass 创建一个静态 getInstance 方法,以便我可以从程序中的任何位置获取实例。但我想知道 Guice 是否支持类似的东西?我确信 Guice 可以允许在任何地方获取单例实例。
非常感谢。
最佳答案
我认为如果myClass需要MySingletonClass,这意味着它们之间存在明显的依赖关系,因此正确的解决方案是将MySingletonClass的实例传递给MyClass的构造函数。
构造函数注入(inject)是最理想的注入(inject)方法之一,因为它使依赖关系显式化,并防止创建具有不满足依赖关系的 MyClass。 如果您确实不喜欢构造函数注入(inject),则始终可以使用 setter 注入(inject),您可以手动注入(inject) MySingletonClass 的实例。
关于java - Guice:如何在没有注入(inject)器或使用构造函数注入(inject)的情况下获取单例实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493143/