我正在使用Spring框架。我的服務班應該創建爲單身人士嗎?有人可以解釋爲什麼或爲什麼不?謝謝!服務層類應該是單身嗎?
回答
是的,他們應該是範圍singleton
。 服務應該是無狀態的,因此它們不需要多於一個實例。
因此,在範圍singleton
中定義它們將節省實例化和連接它們的時間。
singleton
是Spring的默認範圍,所以只需保留bean定義的原樣,而不顯式指定scope
屬性。
您可以閱讀更多關於示波器in the spring docs。
如果你堅持使用singleton作用域的bean,Spring更容易使用。如果你喜歡,單身是它的「默認位置」。是的,它支持其他範圍(在XML文件中使用scope="xyz"
),但它使事情變得更難以使用,並損害性能。
基本上,除非你有一個很好的理由否則,堅持單身。
你大多需要單身。 (Spring默認值。)單例必須是線程安全的,因爲並行請求將使用相同的單個實例。事實上,它們必須是完全無國籍的,因爲它可以在任何時候被破壞和重新創建。
如果您需要跟蹤bean內部的狀態(不應該,這應該在數據庫中或存儲在請求中),您將獲得相同類型bean的許多實例,內存使用量會增加與請求的數量,即單身人士,你仍然只有一個實例。
即使您將bean的範圍限定爲請求,它們仍然必須至少是線程安全的(請求來自同一瀏覽器)。
春天的單身bean可以*不*創建和隨時銷燬,我不知道你從那裏得到了什麼(可能你把它們與EJB會話bean混淆了)。此外,Spring單例中的可變狀態絕對沒問題,你只需要知道在該共享狀態下可以完成哪些操作。 – skaffman 2010-01-31 21:30:52
- 1. 服務層應該是Spring bean嗎?
- 2. 服務層應該拋出異常嗎?
- 3. 服務類應該是java中的單例嗎?
- 4. 這個對象應該是單身嗎?
- 5. 應該WCF服務通常是單身或不是?
- 6. Java Spring服務是單身嗎?
- 7. Web應用程序中的服務層 - 我應該隱藏服務對象嗎?
- 8. 又該服務層
- 9. 測試RESTful服務,我還應該檢查數據層嗎?
- 10. 多個服務層對象應該共享一個DAO嗎?
- 11. 服務層應該可以訪問HttpContext嗎?
- 12. 服務層:它應該隱藏域模型的API嗎?
- 13. 服務層應該知道存儲過程和參數嗎?
- 14. MVC - 應該如何服務層與
- 15. 我完成使用後應該處理一個服務(層)類嗎?
- 16. 應該處理cookies是UI還是服務層的一部分?
- 17. 我的服務層方法應該完全封裝一個工作單元嗎?
- 18. 我應該使用單身改造嗎?
- 19. 我應該使用單身嗎?
- 20. 服務層應該將對象還是id作爲輸入?應該是對象嗎?
- 21. 服務啓用時本身不應該
- 22. 我應該在我的MVC層和服務層中複製驗證嗎?
- 23. 我應該能夠添加一個類到單身人士嗎?
- 24. 我的服務層中的服務應該位於單獨的項目/ DLL /程序集中嗎?
- 25. 哪裏應該是我的邏輯服務層或控制器
- 26. Web服務應該是事務性的嗎?
- 27. 單身人士的方法應該是同步的嗎?
- 28. 實體框架5中的ObjectContexts應該是單身嗎?
- 29. 這些模型應該是單身嗎? (Zend Framework)
- 30. tf.layers.dense是單層嗎?
謝謝。我是Spring新手,我知道如何編寫單例類,但是如何使用Spring設置「單例範圍」? – oym 2010-01-31 19:36:12
哦,我沒有看到你的評論關於它作爲默認範圍。你能向我解釋一下這個範圍是如何設置和配置的,以便我可以瞭解所有東西都是如何連接的?再次感謝。 – oym 2010-01-31 19:37:26
我添加了鏈接到我的答案。 – Bozho 2010-01-31 19:40:10