依赖注入上下文中的组合根是什么?

问题描述 投票:0回答:2

我正在探索依赖注入,术语“组合根”到处都在使用。那么它是什么?

dependency-injection inversion-of-control
2个回答
87
投票
纯 DI

)。 应该只有一个地方会发生这种情况,并且您的容器不需要在组合根之外使用。

引用下面链接的答案之一:

实际上,这意味着您 应该在以下位置配置容器 您的应用程序的根目录。

在桌面应用程序中,这将位于 Main 方法中(或非常接近它)
  • 在 ASP.NET(包括 MVC)应用程序中,这将位于 全球.asax
  • 在 WCF 中,这将位于 ServiceHostFactory 中
  • 等等
这里有一个很好的答案,它对此进行了更多解释。

另请参阅此答案

Mark Seemann 写了一篇关于组合根设计模式的精彩文章。


8
投票

组合根是应用程序中的(最好)唯一位置 模块组合在一起。

只有应用程序才应该具有组合根。图书馆和 框架不应该。

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 配合使用。

© www.soinside.com 2019 - 2024. All rights reserved.