Playframework 2.4 单例,对象

Posted

技术标签:

【中文标题】Playframework 2.4 单例,对象【英文标题】:Playframework 2.4 Singletons, Object 【发布时间】:2015-06-14 08:27:28 【问题描述】:

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

但是,有什么区别呢?

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于Playframework 2.4 单例,对象的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework 2.4 全局对象迁移

Play 2.4 - 在 Eager 单例模块中使用 Ebean

如何在 play framework(scala) 2.4 中获取当前会话或请求对象?

PlayFramework 2.4 和 IntelliJ 14

playframework 2.4 基本ebean配置

来自 playframework 2.4 的开发设置