Playframework 2.4 单例,对象

Playframework 2.4 Singletons, Object

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

但是,有什么区别呢?

仅适用于使用 @Inject() 进行依赖注入吗?

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

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

New instances are created every time a component is needed. If a component is used more than once, then, by default, multiple instances of the component will be created. If you only want a single instance of a component then you need to mark it as a singleton.

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

手动创建多个 @Singleton 注释 classes

相反,scala 中的单例对象是真正的单例,无法手动实例化。