Play Framework 2.4 支持 Google Guice 依赖注入(inject)
使用的好处是什么
@Singleton class A
代替
object A
对于单例?
最佳答案
如果 A 没有依赖关系,我可以看到使用 @Singleton class
优于 object
的三个优势:
A
,并将其声明为 @Singleton class
,您可以选择将其子类化以模拟测试中的某些函数,而这对于 object
是不可能的。 object
, A
的客户端很容易直接引用它,导致系统强耦合,但使用 @Singleton class
迫使他们考虑 A
在哪里实例化,可能导致更解耦的设计。 A
的多个实例,那么如果您选择使用 @Singleton class
,重构将更容易进行。 但是,如果
A
具有依赖项,则使用 @Singleton class
允许它们在构造时被依赖注入(inject),而对于对象,这只有在您将依赖项声明为可变的(例如:带有 getter/setter 方法的 var
)时才有可能。关于scala - Play 框架依赖注入(inject)对象 vs @Singleton 类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33843706/