我們有一個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 bean引用
- 2. 如何在Spring應用程序上下文外創建Spring Bean
- 3. 應用程序上下文中的Java bean定義(Spring)
- 4. 從Groovy類中的應用程序上下文獲取spring bean
- 5. Spring應用程序上下文加密
- 6. Spring應用程序上下文XML宏
- 7. 使用單一的Spring應用程序上下文的web應用程序
- 8. Spring應用程序上下文問題 - 數據源Bean創建
- 9. 從應用程序上下文中刪除Spring Bean
- 10. 應用程序上下文bean
- 11. 用Spring EL與應用程序上下文bean評估bean表達式
- 12. 將Spring配置文件導入Spring應用程序上下文
- 13. Spring根應用程序上下文和Servlet上下文混淆
- 14. 指向單個web應用程序的多個上下文
- 15. 獲取Spring應用程序上下文
- 16. Spring應用程序上下文
- 17. 連接web應用程序內的Spring上下文一個外
- 18. 如何在Spring MVC中讓類知道多個應用程序上下文?
- 19. 將多個上下文根映射到單個應用程序
- 20. 將多個上下文根添加到單個應用程序
- 21. 以編程方式向Spring應用程序添加Bean上下文
- 22. Spring應用程序上下文:webapp文件夾變量?
- 23. 如何覆蓋在應用程序上下文中定義的單個bean
- 24. spring - 應用程序上下文中的bean是否動態綁定到PropertyPlaceholderConfigurer?
- 25. 從另一個應用程序上下文注入bean?
- 26. Spring MVC Web應用程序:應用程序上下文啓動兩次
- 27. 無法在Spring Boot應用程序中注入多個ObjectMapper bean
- 28. 如何在Spring應用程序上下文中減少重複
- 29. Spring應用程序上下文用Autowire手動加載
- 30. Spring應用程序上下文的Web控制檯
順便說一句 - 你想要跨越上下文_share_單身人士,或者你想爲每個上下文使用不同的signletons? – Bozho 2010-02-11 18:38:27
不,我不想跨上下文共享對象,我想讓不同的線程使用不同的對象組。我面臨的挑戰是整合日誌和數據庫事務。我不想受到對象級互斥體的困擾,而不是現在至少。如果我要設置singleton = false,我必須對整個框架進行更改,但我不太確定 – questzen 2010-02-11 18:43:40