如果我有一個從主應用程序啓動的線程。在這個線程中生成事件。每次生成事件時都會創建一個對象。在該對象中需要依賴性,所以我想注入該對象。我如何將這種依賴性傳遞給創建的對象?我是否需要向下傳遞這種愚蠢的行爲(讓線程中工作的班級知道這個依賴關係),還是有更好的方法來做到這一點?我使用Unity btw。創建對象的線程中的依賴注入
1
A
回答
3
最安全的方法是讓每個線程在開始時創建一個新的對象圖。不要通過其他線程傳遞依賴關係。
通過依賴注入,您可以嘗試集中關於對象生命週期的知識。這個集中的地方叫做Composition Root。當你開始將依賴關係從一個線程傳遞給另一個線程時,代碼的這些部分必須知道傳遞這些依賴關係是否安全。例如,那些依賴是線程安全的嗎?在許多情況下,這可能是微不足道的,但是可以阻止你用其他實現來改變這些依賴關係,因爲現在你必須記住你的代碼中存在這樣的地方,你需要知道哪些依賴被傳遞。您再次分散了這些知識,使得更難以推斷DI配置的正確性,並更容易以導致競爭狀況的方式錯誤配置容器。
您可以在此維基頁面找到關於此主題的更多信息:How to work with dependency injection in multi-threaded applications
相關問題
- 1. 動態創建的對象上的依賴注入
- 2. 依賴注入Date對象
- 3. 在依賴注入中哪裏是要創建的注入對象?
- 4. 依賴對象創建
- 5. 注入相互依賴的對象 - roboguice
- 6. 注入一個對象內的依賴
- 7. 依賴注入的創建模式
- 8. 用Java創建簡單的依賴注入容器,動態創建對象
- 9. 依賴注入Symfony對象創建參數
- 10. 如何用依賴項注入多次創建對象
- 11. 如何使用依賴注入創建業務層對象?
- 12. 可否依賴注入延遲創建對象所需?
- 13. 如何用某些依賴注入來限制對象創建?
- 14. MVVM,依賴注入和運行時對象創建
- 15. 依賴注入和運行時創建對象
- 16. 如何使用依賴注入創建新對象
- 17. 正確構建和破壞注入器依賴注入對象
- 18. 在依賴注入中dynamiclly初始化依賴項對象?
- 19. 創建相互依賴的對象
- 20. Spring依賴注入對象池
- 21. 持久對象和依賴注入
- 22. 依賴注入檢索SecurityContext對象
- 23. ZF2依賴注入吸熱體對象
- 24. Spring Java對象依賴注入
- 25. 依賴注入/配置對象
- 26. 依賴注入 - 傳遞對象
- 27. 依賴注入與NHibernate對象
- 28. 依賴注入OR配置對象?
- 29. 日誌Spring bean創建/依賴注入
- 30. 依賴注入創建多個實例