【问题标题】:Play framework compile-time dependency injection and singleton播放框架编译时依赖注入和单例
【发布时间】:2021-12-27 14:09:12
【问题描述】:

我一直在将我的 Play 应用程序从使用 Guice 重构为使用编译时 DI。

在 Guice 中,当我们不使用@Singleton 装饰类时,可以根据需要创建许多实例。

在编译时DI中,我们创建一个实例注入一次,所以我认为它相当于一个单例。

我的问题是,如果将所有内容都限制为一个实例,我是否会失去任何性能。例如,如果我有一个实例serviceA,使用方法doSomething,并考虑到一切都是无状态的。如果我有一个 32 核 CPU,并且有很多请求进来。在编译时 DI 的上下文中,Play 是否能够利用 CPU 的全部容量?

【问题讨论】:

    标签: scala dependency-injection playframework compile-time


    【解决方案1】:

    AFAiK Guice(和其他运行时 DI 框架)默认情况下不会生成单例,唯一的原因是在创建实例时更快并简化复杂(可能是循环的)依赖图。他们的目标是更快地开始。

    无论您有 1 个还是 2 个 ServiceA 实例,这些实例创建后都不会影响使用这些实例的性能。

    理论上,单例会更好。

    【讨论】:

    • 感谢您为我解决这个问题。
    猜你喜欢
    • 2015-10-11
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2015-07-18
    相关资源
    最近更新 更多