[英]EvolutionsComponents in compile-time dependency injection play project
[英]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.