我一直在重構我的 Play 應用程式,從使用 Guice 到使用編譯時 DI。
在 Guice 中,當我們不使用 裝飾一個類時@Singleton,可以根據需要創建許多實體。
在編譯時DI中,我們創建了一個注入一次的實體,因此我認為它相當于一個單例。
我的問題是,如果將所有內容都限制為一個實體,我是否會失去任何性能。例如,如果我有一個實體serviceA,帶有方法doSomething,并且考慮到一切都是無狀態的。如果我有一個 32 核 CPU,并且有很多請求進來。在編譯時 DI 的背景關系中,Play 是否能夠利用 CPU 的全部容量?
uj5u.com熱心網友回復:
AFAiK Guice(和其他運行時 DI 框架)在默認情況下不會產生單例,唯一的原因是在創建實體和簡化復雜(潛在回圈)依賴圖時更快。他們的目標是更快地開始。
無論您有 1 個還是 2 個實體,ServiceA這些實體創建后都不會影響使用它們的性能。
從理論上講,擁有單身人士會更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358552.html
