我正在探索依赖注入,术语“组合根”到处都在使用。那么它是什么?
)。 应该只有一个地方会发生这种情况,并且您的容器不需要在组合根之外使用。
引用下面链接的答案之一:
实际上,这意味着您 应该在以下位置配置容器 您的应用程序的根目录。
在桌面应用程序中,这将位于 Main 方法中(或非常接近它)
这里有一个很好的答案,它对此进行了更多解释。
- 在 ASP.NET(包括 MVC)应用程序中,这将位于 全球.asax
- 在 WCF 中,这将位于 ServiceHostFactory 中
- 等等
另请参阅此答案。
组合根是应用程序中的(最好)唯一位置 模块组合在一起。
只有应用程序才应该具有组合根。图书馆和 框架不应该。
DI 容器只能从组合根引用。 所有其他模块不应引用该容器。
http://blog.ploeh.dk/2011/07/28/CompositionRoot/
我根据这些原则编写了自己的 JavaScript 依赖注入框架,名为 Di-Ninja
https://github.com/di-ninja/di-ninja据我所知,是javascript中唯一实现Composition-Root设计模式的 它的文档可能是另一个很好的例子来演示它是如何工作的。 它可以与 NodeJS、浏览器(使用 Webpack 或 UMD/AMD)和 React-Native 配合使用。