问题标签 [dependency-injection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2244 浏览

c# - 如何在自定义 IOC 容器中使用构造函数参数解析实例?

我正在尝试构建自己的控制容器反转。现在我将对象及其类型存储在字典中,并在被询问时解析引用。但我想让解析引用或新实例成为可能。我可以使用 Activator 类创建一个新实例。但是,如果要解析的对象的构造函数接受 1、2 或任何参数怎么办?

例如,我希望能够这样说:

并像解决它

其中 MyFoo 使用给定参数Proxy和 MyBar 与ProxyDataThing实例化。

决心必须做什么才能做到这一点?

0 投票
2 回答
452 浏览

dependency-injection - 约定优于配置反对松散耦合?

许多程序员似乎都在遵守配置约定。在 IoC 的上下文中,这意味着使用 API 而不是 XML 配置。

当您必须引用包含抽象接口/类的具体实现的 DLL 以使用配置约定时,您应该如何保持 DI/IoC 背后的松散耦合思想?

0 投票
3 回答
1064 浏览

.net - 依赖注入启动性能

我最近被要求解决使用 Microsoft 的 Composite UI Application 块构建的应用程序中的一些性能问题 - 特别是加载时间过长。

这是围绕 Microsoft 的 ObjectBuilder 依赖注入框架构建的,该框架使用反射/属性来注册类。分析表明,在启动时,应用程序花费大量时间进行反射,因为 ObjectBuilder 会扫描每个加载程序集中的每个类型,以搜索要注册的内容。

替代 DI 框架似乎也都使用属性、XML 配置或纯代码。
似乎没有任何其他基于属性的框架会更好,而且我对必须解析成堆的 XML 等的启动时间持怀疑态度。
基于纯代码的框架似乎应该快得多,但它们的灵活性也低得多,所以看起来并不是一个明确的好选择......

这导致我搜索 DI 容器基准,但我唯一能找到的是这个: http: //www.codinginstinct.com/2008/04/ioc-container-benchmark-unity-windsor.html
虽然它是一个很好的基准,但它只衡量使用容器创建 100 万个对象的速度。我对创建 100 万个对象没有兴趣,我只是希望应用程序尽快启动,所以我正在寻找有关 DI Container启动的任何信息成本的任何信息,无论是博客文章、轶事,甚至是诸如就像“这是一种使 ObjectBuilder 更快的方法”一样简单。

提前致谢

0 投票
6 回答
7311 浏览

java - 哪个 Java Web 框架最适合 Google Guice?

我计划开始一个新项目,并正在研究当前最先进的 Java Web 框架。我决定围绕 Guice 构建我的应用程序,并且可能会使用非常轻量级的 ORM,例如 Squill/JEQUEL/JaQu 或类似的,但我无法决定使用 Web 框架。哪一个最适合这样一个轻量级的环境?哪一个与 Guice 结合得最好?

0 投票
7 回答
570 浏览

.net - 使用依赖注入框架还是自己编写?

当开始一个新的应用程序时,您宁愿只使用现有的依赖框架并冒可能出现的缺点,还是选择编写自己的完全适应的框架,为什么?

0 投票
1 回答
1682 浏览

.net - n 层应用程序中的依赖注入?

我有一个 3 层 .NET 服务应用程序,它遵循标准方法:

我一直在尝试学习依赖注入,到目前为止发现它很棒(使用 Autofac)。3 层中的每一层都需要创建各种各样的对象,有时还需要额外的配置等。看起来 DI 容器应该是解决这个问题的理想之选,但我遇到了一些问题,看它应该与系统的其余部分相关联。

目前我在前端有一个配置 DI 容器的类。它基本上是一大堆代码container.Register<SomeType>(),等等。

问题是,它正在为所有 3 层配置容器,因此必须对数据访问层有相当深入的了解。在我的前端拥有这样知识的代码会在我脑海中敲响警钟,因为将应用程序分成几层是为了避免这种确切的情况。
更糟糕的是,我的数据访问层不仅仅是 SQL 服务器,它是一个愚蠢的比特桶,而是由许多复杂的 COM 互操作和 P/Invoke 调用组成,因此对 DI 有相当大的影响配置。

我已经考虑过将其分解——也许每层有一个容器,或者在每一层都有一个“设置”类,它与全局 DI 容器对话以注册它自己的位,但我不确定这是否会导致解决的问题多于解决的问题...

如果有人能分享他们在多层应用程序中使用 DI 的经验,我将不胜感激。

谢谢,猎户座。

0 投票
1 回答
1502 浏览

dependency-injection - Castle Windsor:如果创建的对象引用回工厂,如何防止工厂创建的对象中的循环引用

我正在使用温莎城堡作为我的 IoC 容器,但遇到了一些问题。这在代码中得到了最好的解释,所以我会试一试。我有一个工厂类,它应该为我提供某个接口的实现:

工厂类的实现可能如下所示,但我不确定这是要走的路: public interface ObjectCreatorFactory:IObjectCreatorFactory { IEnumerable specificCreators; IObjectCreator 默认创建者;

现在这样就可以了,但是如果我希望我的 IObjectCreator 实例使用特定的 IObjectCreator 创建子对象,我想调用 ObjectCreatorFactory,这显然会导致循环引用:

这行不通。在这种情况下,创建的对象将引用回工厂以供子对象创建者使用,该怎么做?

0 投票
4 回答
1596 浏览

dependency-injection - 原始类型和 IoC 容器

使用 IoC 容器时如何处理原始类型?

即假设你有:

您将如何获得 int 和 string 构造函数参数?

0 投票
2 回答
272 浏览

unit-testing - 使用依赖注入系统如何对代码进行单元测试

据我所知,有两种方法,都有各自的缺点。

  1. 从依赖注入系统中获取您正在单元测试的对象。这是低维护,因为您在更改框架时无需管理任何内容。但是您实际上是从对象的角度测试整个系统,如果一个组件失败,它可能会破坏大量单元测试,并且可能不清楚哪个失败了。

  2. 是在单元测试中手动管理依赖关系,在某些情况下创建测试对象,以便您可以单独测试每个对象。这使单元测试保持谨慎,但大大增加了单元测试本身的维护。这也意味着您不会发现由于对象在您的实时系统上交互的方式而导致的错误。

方法是对还是错?是否应该使用妥协?有没有人有任何成功的故事。

0 投票
1 回答
1612 浏览

c# - StructureMap CacheBy InstanceScope.HttpSession 不起作用

这是我的 StructureMap 引导:

当我将对话设置为使用 .CacheBy(InstanceScope.HttpSession) 时,我得到找不到对象引用,但是如果我不使用 CacheBy 它工作正常。这需要进入会话,我不确定为什么这不起作用。

我做错了什么还是这似乎是 StructureMap 中的错误?