域驱动设计中依赖注入的最佳位置

时间:2018-01-10 06:40:04

标签: design-patterns dependency-injection domain-driven-design

在DDD的上下文中,我理解应用程序服务编排域Service和Repository(应用程序工作流),现在我的问题是哪个层负责注入依赖项,依赖注入必须在UI中完成(使用应用程序的层服务)或在应用程序服务中。例如,在具体的存储库注入的情况下,哪个层应该这样做?

另一个问题是,我可以将应用程序服务代码直接放在Web服务中并将该Web服务用作应用程序服务层吗?

最好的问候

1 个答案:

答案 0 :(得分:5)

  

...依赖注入必须在UI(使用应用程序服务的层)或Application Service中完成。例如,在具体的存储库注入的情况下,哪个层应该这样做?

应尽可能使用依赖注入容器。通常,这意味着在应用程序的引导程序中,甚至在UI之前。

  

例如,在具体的存储库注入的情况下,哪个层应该这样做?

Composition root中首次调用的图层,即整个应用程序的入口点。

  

另一个问题是,我可以将应用程序服务代码直接放在Web服务中并将该Web服务用作应用程序服务层吗?

这在很大程度上取决于您的架构以及什么是“Web服务”。如果您指的是分层体系结构:如果它类似于REST控制器,那么NO,在这种情况下,“Web服务”位于表示层中,而应用程序服务位于应用程序层中。 Application层包含所有用例,每个Application服务都是一个用例。阅读更多here