我們有一個spring應用程序(單線程設計)。我們希望將其調整爲多線程。一個想法是創建一個父線程併產生不同的線程,這些線程將實例化他們自己的應用上下文並且並行運行。 (到目前爲止,內存和CPU不是問題)。我不確定春天如何實現單身。 Spring會使用靜態引用並返回它,或者使用某種類型的緩存/映射(它是非靜態的/非單一的和上下文相關的)在哪裏進行查找?這將幫助我決定是否更改config-xml。請任何想法。跨多個應用程序上下文的單條Spring bean
3
A
回答
5
Spring singleton
bean在每個應用程序上下文中被實例化一次。也就是說,如果你從同一個配置創建了許多應用程序上下文,他們將擁有不同的單例bean實例。
如果您希望他們共享一個singleton bean的單個實例,您可以在父應用程序上下文中聲明它,並在創建它們時爲其提供多個上下文。
+0
+1,但這裏使用術語單例是有誤導性的。它們是應用程序上下文範圍內的單例,但不能超出這個範圍。 – 2010-02-11 20:33:56
2
爲什麼需要多個應用程序上下文來使應用程序成爲多線程?多線程可以很好地使用相同的上下文。
1
在我看來,你真的需要看看你的單身豆實際上正在做什麼它們的功能將在多線程環境。我不會嘗試更新您的應用程序上下文以適應您的線程模型,而是要使bean的生命週期合適。
- 如果他們是真正的單身人士,並且本質上是線程安全的,那麼就像多線程一樣使用它們。
- 如果它們不是線程安全的,那麼它們是否應該在你的新的多線程實現中繼續使用spring singleton?將它們更新爲每個線程實例化的非單例bean,然後嘗試將整個應用程序上下文與特定線程綁定可能更有意義。
相關問題
- 1. Spring應用程序上下文加密
- 2. 使用單一的Spring應用程序上下文的web應用程序
- 3. 從應用程序上下文中刪除Spring Bean
- 4. Spring應用程序上下文問題 - 數據源Bean創建
- 5. 應用程序上下文bean
- 6. 指向單個web應用程序的多個上下文
- 7. 獲取Spring應用程序上下文
- 8. Spring應用程序上下文
- 9. 如何在Spring MVC中讓類知道多個應用程序上下文?
- 10. 將多個上下文根添加到單個應用程序
- 11. Spring應用程序上下文:webapp文件夾變量?
- 12. 具有Web應用程序上下文的Spring上下文層次結構
- 13. 如何覆蓋在應用程序上下文中定義的單個bean
- 14. Spring MVC Web應用程序:應用程序上下文啓動兩次
- 15. 無法在Spring Boot應用程序中注入多個ObjectMapper bean
- 16. 如何在Spring應用程序上下文中減少重複
- 17. Spring應用程序上下文的Web控制檯
- 18. Spring:嵌套的應用程序上下文
- 19. Spring Test/JUnit問題 - 無法加載應用程序上下文
- 20. 部署了Spring應用程序但上下文無法啓動
- 21. Spring 4升級後應用程序上下文未加載
- 22. 添加預構建的Bean的Spring應用上下文
- 23. 加載xml應用程序上下文ioexception spring
- 24. 跨多個應用程序的配置
- 25. 在應用程序上下文查找的Groovy bean
- 26. 與bean和應用程序相關的查詢上下文。
- 27. 進樣豆依賴到Spring應用程序上下文
- 28. 在Spring應用程序上下文中配置c3p0(intSQL和timezone)
- 29. 捕捉應用程序上下文錯誤spring junit
- 30. swing應用程序,彈簧應用程序上下文錯誤
順便說一句 - 你想要跨越上下文_share_單身人士,或者你想爲每個上下文使用不同的signletons? – Bozho 2010-02-11 18:38:27
不,我不想跨上下文共享對象,我想讓不同的線程使用不同的對象組。我面臨的挑戰是整合日誌和數據庫事務。我不想受到對象級互斥體的困擾,而不是現在至少。如果我要設置singleton = false,我必須對整個框架進行更改,但我不太確定 – questzen 2010-02-11 18:43:40