创建对象的线程中的依赖项注入
本文关键字:注入 依赖 线程 创建对象 | 更新日期: 2023-09-27 18:32:03
如果我有一个从主应用程序启动的线程。在此线程中生成事件。每次生成事件时,都会创建一个对象。在该对象中需要依赖关系,因此我想注入该对象。如何将此依赖项传递给创建的对象?我是否需要向下传递 depandility(并让在线程中工作的类知道依赖关系),或者有更好的方法来做到这一点?顺便说一句,我正在使用 Unity 。
最安全的方法是让每个线程在开始时构建一个新的对象图。不要通过其他线程传递依赖项。
使用依赖关系注入,您可以尝试集中有关对象生存期的知识。这个集中的地方称为组合根。当您开始将依赖项从一个线程传递到另一个线程时,代码的这些部分必须知道传递这些依赖项是否安全。例如,这些依赖项是否线程安全?在许多情况下,分析这可能微不足道,但会阻止您使用其他实现更改这些依赖项,因为现在您必须记住,代码中有一个地方正在发生这种情况,并且您需要知道传递了哪些依赖项。你再次分散了这些知识,使推理 DI 配置的正确性变得更加困难,并且更容易以导致争用条件的方式错误配置容器。
您可以在此 wiki 页面上找到有关此主题的更多信息:如何在多线程应用程序中使用依赖注入