這似乎是一個奇怪的問題(答案顯然會生產,杜),但是如果你閱讀Java文檔:在應用程序服務器中用於Google Guice的正確生產階段是什麼?
/**
* We want fast startup times at the expense of runtime performance and some up front error
* checking.
*/
DEVELOPMENT,
/**
* We want to catch errors as early as possible and take performance hits up front.
*/
PRODUCTION
假設,你必須在應用程序服務器的無狀態呼叫的情況下,最初的接收信號方法(或那裏)爲每個呼叫創建新的噴油器。如果在給定的調用中不需要所有模塊綁定,那麼使用開發階段(這是默認設置)似乎更好,並且不會提前展現性能,因爲您可能永遠不會採用它,這裏「前期」和「運行時間性能」之間的區別是沒有意義的,因爲它是一次調用。
當然,這樣做的缺點似乎是您將失去錯誤檢查功能,從而導致潛在的代碼路徑出現意外導致問題。
所以問題歸結爲上述正確的假設?當噴射器的給定壽命是一次呼叫時,您是否可以節省大量模塊的性能?
是否正在爲每一個請求創建一個新的注入器,真的是你想要做的?這不是我們如何做(模子注射器)。 – 2010-03-17 22:30:15
@凱文,我很樂意聽到更好的選擇。請注意,注入器具有一段狀態(通過呼叫傳遞的認證令牌),每次呼叫都必須有所不同,因此僅將它存儲在靜態中不是一種選擇。雖然我知道兒童注射器存在,但我從未考慮過他們能爲我做些什麼。 – Yishai 2010-03-17 22:40:34
考慮輔助注射?或者也許是帶種子值的SimpleScope? http://code.google.com/p/google-guice/wiki/CustomScopes – 2010-03-18 00:57:25