IoC 容器和领域驱动设计

2023-12-19

我一直在寻找在域驱动设计中使用 IoC 容器的指南。不幸的是,埃文的书没有触及这个主题。我在互联网上能找到的唯一实质性指导方针是.

马洛维奇的许多观点都是常识,但我对其中的一些观点感到担忧。他建议 IoC 容器应该仅用于解析服务,并且使用 IoC 容器来解析域依赖关系不是一个好主意。然而,他没有用任何例子来支持这一说法。他简单地陈述了事实。

然后他接着说,混合使用 IoC 容器和工厂是没有意义的。这似乎与他的第一点相矛盾。事实上,如果 IoC 容器不应该解决域依赖关系,那么应该如何解决它们?埃文的书明确指出工厂是合乎逻辑的选择。

如果您就此事提供任何意见,我将不胜感激。对于 DDD 和 IoC 我都是新手。我正在努力理解 IoC 和 DDD 如何协同工作。


在我看来,他关于在域模型中不使用 IoC 容器的观点是正确的。我自己也遵循这种做法。基本思想是服务可能包含基础设施依赖项,因此模拟它们是明智的。领域实体没有这些,因此模拟它们并不重要(仍然对接口进行编码是很好的做法)。

领域实体的工厂不应该位于 IoC 容器中,但服务的工厂应该位于 IoC 容器中。基本上,您可以在服务中引用实体工厂。耦合不是很紧密。

有关 IoC 的好读物可以在以下位置找到:Billy McCafferty 的博客文章“依赖注入 101” http://devlicio.us/blogs/billy_mccafferty/archive/2009/11/09/dependency-injection-101.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IoC 容器和领域驱动设计 的相关文章

  • 在约束验证器中使用 Guice 进行依赖注入

    我有一个在 ConstraintValidator 的实现中注入类的用例 我正在使用 Google guice 进行依赖项注入 目前无法在验证器内注入 我的场景的简化形式 内部模块 Provides Singleton public Ser
  • 与仅调用依赖函数/类相比,在 FastAPI 中使用 Depends 有哪些优点?

    FastAPI 提供了way https fastapi tiangolo com tutorial dependencies 通过其自己的依赖关系解析机制来管理依赖关系 例如数据库连接 它类似于一个pytest夹具系统 简而言之 您在函数
  • CDI 对象无法使用注入的构造函数进行代理

    当尝试将参数注入 CDI bean ApplicationScoped 的构造函数时 我遇到以下问题 Caused by org jboss weld exceptions UnproxyableResolutionException WE
  • 如何在 Caliburn.Micro 中使用 Conductor 的依赖注入

    我有时用Caliburn Micro http caliburnmicro com创建应用程序 使用最简单的 BootStrapper 我可以像这样使用 IoC 容器 SimpleContainer private SimpleContai
  • 以编程方式注入依赖项asp.net core

    我刚刚开始Asp net core 依赖注入 我的概念可能不准确 这篇 docs asp net 帖子 https docs asp net en latest mvc controllers dependency injection ht
  • 春天。使用java配置解决循环依赖而不使用@Autowired

    我有循环依赖和java配置 虽然使用 xml 配置解决它非常简单 但如果没有 Autowired 我无法使用 java 配置解决它 豆子 public class A private B b public B getB return b p
  • 用dagger 2查看依赖注入

    我有一个自定义视图扩展TextView 我应该在哪里调用我的组件来注入视图 component inject customTextView 因此 我发现我需要在自定义视图的构造函数中添加注入 在所有视图中 或者使一个调用另一个 Exampl
  • NHibernate IQueryable 集合作为 root 的属性

    我有一个根对象 它有一个集合属性 例如 I have a Shelf object that has Books Now public class Shelf public ICollection
  • 从 Autofac 容器解析通用接口的 IEnumerable

    我不确定这是否可能 我见过其他一些帖子提出类似的问题 但没有一个得到满意的答案 我想要做的是解析 Autofac 中具有不同泛型类型的接口集合 所以类的构造函数看起来像这样 public class SomeClass
  • Xamarin、Autofac、NavigationService 和 BeginLifetimeScope

    关于带有 autofac 的生命周期范围以及何时在 xamarin 应用程序中使用它们的初学者问题 正如这篇文章中提到的 https nblumhardt com 2011 01 an autofac lifetime primer htt
  • 如何动态实例化服务?

    我有一个Utils服务很重 我想在特定的用户操作中使用其中定义的一些函数 由于这项服务很重 我想延迟实例化它 在用户操作时 我该如何实现这一目标 Service module service Utils function dep1 dep2
  • 使用 asp.net mvc 4 的简单注入器,从另一个程序集加载控制器

    我正在开发一个 asp net mvc 4 站点 使用 Simple Injector 作为 Ioc 工具 这将是一个可插拔的架构 某些控制器和视图位于另一个程序集中 另一个 mvc4 应用程序 Plugin Web dll 从主应用程序中
  • 设置惰性静态变量首先初始化然后分配?

    我意识到static变量是隐式的lazy 这真的很棒 执行以下操作在第一次调用之前不会创建实例 static var test Test 但是 将一个新实例分配给static变量初始化原始实例 然后分配新实例 这对我来说很麻烦 SomeTy
  • 私有只读接口 - 它是多余的吗?

    我在我的项目中使用 IoC 和 DI 但是我想知道以下是否是一个好的做法 private readonly IMyService myservice 作为服务使用者的类内的字段 该字段在构造函数中设置 我确信我在某处见过这个并且我已经注意到
  • Grails:在域类中动态注入服务

    我需要注入基于域属性的服务 到目前为止我想出了以下内容 ApplicationHolder application getServiceClass package property Service clazz 但以这种方式加载它不会注入它的
  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • 提供通用服务接口最具体实现的依赖注入机制

    我觉得我和标题一起玩了流行语宾果游戏 这是我所要求的一个简洁示例 假设我有一些实体的继承层次结构 class BaseEntity class ChildAEntity BaseEntity class GrandChildAEntity
  • 只能通过bootstrap将服务注入到服务中吗?

    我正在尝试连接一个使用 Http 服务的基本 Angular2 应用程序 我见过的大多数教程都是通过Component消耗Http服务 这似乎是错误的 除非瘦控制器的基本理念已经改变 但这是一个不同的问题 我想创建一个使用 Angular
  • 静态方法中的统一

    一个可能很简单的问题 但很奇怪为什么我不知道该怎么做 Unity PRISM 和静态方法 在这种特殊情况下 需要使用扩展方法 但一般来说 如何在静态方法中访问 统一提供的实例 想想例如我想访问一个日志服务来记录我在静态方法中所做的一些事情
  • 使用其他聚合中的数据检查命令的有效性

    我目前正在开发我的第一个更大的 DDD 应用程序 目前来说 它运行得很好 但我们从早期就陷入了一个让我无法停止思考的问题 在我们的一些聚合中 我们保留对另一个聚合根的引用 这对于整个应用程序非常重要 基于它们的 ID 因此不存在硬引用 删除

随机推荐

  • 将 :host-context() 与相邻同级选择器一起使用

    我正在尝试使用 host context 和相邻的同级选择器来设置元素的样式 如下所示
  • 严格的别名规则是什么?

    当询问有关C 中常见的未定义行为 https stackoverflow com questions 98340 what are the common undefinedunspecified behavior for c that yo
  • Java8 从类中检索 lambda setter

    我试图为私有字段的 setter 获取 lambda 方法句柄 但由于某种原因 无法找到该 setter 这是我正在使用的功能接口 FunctionalInterface public interface ISetter
  • 强制执行有界 Nat?

    我怎样才能强制执行Nat that s lt N Example def lessThan5 x NatLT5 where lessThan5 Nat 4 会编译 但是lessThan5 Nat 6 不会 您可以使用类型类LTEq http
  • 错误:(gcloud.app.deploy)INVALID_ARGUMENT:无法解析源

    我正在尝试部署一个go 1 11运行时曾经有效 但最近我得到了 ERROR gcloud app deploy INVALID ARGUMENT unable to resolve source错误 我的里面什么也没有app yaml已更改
  • python中强度函数的积分

    有一个函数可以确定圆形孔径的夫琅和费衍射图案的强度 更多信息 http en wikipedia org wiki Airy Disk 距离 x 3 8317 3 8317 中函数的积分必须约为 83 8 如果假设 I0 为 100 当您将
  • 如何向作为组存储在 HDF5 文件中的 pandas 数据帧添加属性?

    我创建了一个多维 pandas 数据框 如下所示 import numpy as np import pandas as pd iterables bar baz foo qux one two mindex pd MultiIndex f
  • 值得使用 sqlalchemy-migrate 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个使用 sqlalchemy 的 Web 应用程序 在 Pylons 内 我需要有效地更改架构 以便能够至少每天 甚至更多 更改生产版本
  • UDP打洞帮助

    我正在尝试使用点对点将互联网网络添加到我的游戏中 我已经实现了仅 LAN 版本 它使用 NET 的对等类在本地网络内进行连接 我意识到我需要使用 UDP 打洞来建立与防火墙后面的其他客户端的连接 这就是我开始实施它的方式 该服务器是一个 H
  • R 调用的 C 代码不断崩溃

    下面是我编写的 C 代码的一部分 功能foo是在 R 中调用 代码不断导致 R 崩溃 我将问题范围缩小到这个outer 函数 用于计算外部和或差 注意被注释掉的部分 如果我不注释掉 该函数将导致R崩溃如果每个数组包含超过 1000 个数据点
  • 创建允许字符串参数(字符串索引)的类索引器operator[]

    我想用 C 创建一个类 该类必须使用集合进行管理 好的 没问题 我当然想使用operator 但是 在这种情况下 我的愿望是不按位置索引 而是按名称 gt 这意味着使用字符串索引器 看来这种东西对我的编译器来说不太好 In hpp clas
  • 如何在 ChartJS 中使折线图覆盖在条形图上

    我正在使用 leighquince 叉子chartjs https github com leighquince Chart js在 v1 01 beta 5 中 因为我可以叠加两个图表 当我尝试叠加折线图和条形图时 折线图位于条形图下方
  • 使用 LINQ Contains 与 SqlMethods.Like

    如何在 LINQ 查询中复制以下结果而不调用帮助器库 System data Linq SqlClient Where SqlMethods Like e POSITION A FGL 7 如果可能的话 我希望这个查询更加纯粹的 LINQ
  • 在禁用的控件上显示工具提示

    我试图在鼠标悬停在禁用的控件上时显示工具提示 由于禁用的控件不处理任何事件 因此我必须在父窗体中执行此操作 我选择通过处理来做到这一点MouseMove父窗体中的事件 这是完成这项工作的代码 void Form1 MouseMove obj
  • Java 修改 foreach 中的元素

    我正在自学Java 因此下面的代码除了学习 测试之外没有其他功能 本质上 我试图在 foreach 循环中修改整数数组的元素 即 将它们减半 我应该注意的是 我并没有重新排序 添加或删除元素 而是将元素重新排序 只是改变他们的价值观 这是我
  • 替换属性以提高性能

    情况 如同这个问题 https stackoverflow com questions 4963036 python how to replace a property with a regular attribute 我想更换一个属性 与
  • IOS 13 CNContacts 不再检索所有联系人

    我有一个应用程序可以与 CNContacts 框架完美配合 一直到 IOS 12 我目前正在使用 IOS 13 beta 对其进行测试 但它完全损坏了 我已检查联系人权限并删除该应用程序并重新允许权限 这是我用来检索所有联系人的代码 NSE
  • 为什么局部变量不允许使用 volatile 关键字?

    考虑一下片段 如果在主线程中 我将其放在method volatile CountDownLatch latch new CountDownLatch 3 new Thread new ProcessThread Worker1 latch
  • 营销人员的 Sitecore Web 表单 2.4 内容交付服务器上的文件上传错误 (WFFM)

    营销人员网络表单 2 4 问题 情况 当从内容交付服务器提交表单时 我在带有文件上传字段的表单上遇到技术错误 到目前为止 我可以确定问题发生在 CD 服务器上 因为没有引用 master 数据库 我很欣赏 WFFM 文档说 FileUplo
  • IoC 容器和领域驱动设计

    我一直在寻找在域驱动设计中使用 IoC 容器的指南 不幸的是 埃文的书没有触及这个主题 我在互联网上能找到的唯一实质性指导方针是 马洛维奇的许多观点都是常识 但我对其中的一些观点感到担忧 他建议 IoC 容器应该仅用于解析服务 并且使用 I