1

在 Playframework 2.4 之前,我使用为单例类创建对象,现在我看到可以使用 @Singleton 注释来实现单例。

但是,有什么区别呢?

仅用于使用 @Inject() 的依赖注入?

恐怕带有依赖注入的 Playframework 2.4 会以不必要的复杂方式进入。

4

1 回答 1

2

@Singleton是 JSR 330 标准的一部分,并且确实仅用于依赖注入。它告诉您的 DI 框架只创建给定类的一个实例,并在您的应用程序中使用该单个实例。从文档:

每次需要组件时都会创建新实例。如果一个组件被多次使用,那么默认情况下,将创建该组件的多个实例。如果您只想要一个组件的单个实例,那么您需要将其标记为单例。

您可以将其视为您的 DI 框架仅创建一个实例的指令。没有什么能阻止您@Singleton使用new.

相比之下,scala 中的单例对象是真正的单例,不能手动实例化。

于 2015-06-15T07:21:47.657 回答