繁体   English   中英

Play 框架编译时依赖注入和单例

[英]Play framework compile-time dependency injection and singleton

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

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

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

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

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

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

从理论上讲,拥有单身人士会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM