Frameworks 依赖注入框架:它们是如何工作的? 我认为自己是一个有经验的程序员,理解依赖注入的基本概念。另一方面,我的大部分经验是编写相对低级的单人数字处理代码。我没有任何大型企业项目的工作经验
在这样的背景下,我一辈子都不明白为什么有人需要一个框架来进行依赖注入。有人能给我一个这样一个框架如何工作的简要概述,而不涉及很多细节,并解释它如何使生活比你自己的滚动更容易Frameworks 依赖注入框架:它们是如何工作的? 我认为自己是一个有经验的程序员,理解依赖注入的基本概念。另一方面,我的大部分经验是编写相对低级的单人数字处理代码。我没有任何大型企业项目的工作经验,frameworks,dependency-injection,Frameworks,Dependency Injection,在这样的背景下,我一辈子都不明白为什么有人需要一个框架来进行依赖注入。有人能给我一个这样一个框架如何工作的简要概述,而不涉及很多细节,并解释它如何使生活比你自己的滚动更容易 编辑:我在这里得到了一些很好的答案。我说DI框架基本上为您提供了一种方便的方法来创建全局可访问的工厂,这些工厂在对象请求时创建/返回依赖项实例,对吗?如果是这样的话,我一直在我的代码中以非常特别的方式做这样的事情,但从未想过使用任何形式的/重量级的框架来实现它。维基百科对好处和实现有很好的描述 我发现像Spring这样的I
编辑:我在这里得到了一些很好的答案。我说DI框架基本上为您提供了一种方便的方法来创建全局可访问的工厂,这些工厂在对象请求时创建/返回依赖项实例,对吗?如果是这样的话,我一直在我的代码中以非常特别的方式做这样的事情,但从未想过使用任何形式的/重量级的框架来实现它。维基百科对好处和实现有很好的描述 我发现像Spring这样的IoC容器很有用,因为它们所做的所有其他“事情”,比如事务管理,以及它们提供的代码,比如代码模板、测试基类等等,都非常有用。此外,在Java世界中,我认为IoC是对许多开发人员认为过于笨拙的JavaEE标准的反应。正如Spring所实现的那样,IoC允许您设计POJO服务组件,在大多数情况下,我想这比JavaEE让人们跳过的障碍更容易 在某种程度上,我认为大部分(或至少部分)是精神上的自慰,这意味着容器提供的IoC优势在大多数使用容器的项目中没有得到充分利用。
“我们应该使用DI,因为将来我们可以很容易地交换DAO的实现,Yippeeeee”——这在我的经验中很少发生。人们之所以使用它们,是因为它们已经成为一种标准和流行语。我不是说那是件坏事;只是标准软件的IoC部分并不是使用它们的真正原因 我真的很喜欢@hvgotcodes答案,但我想补充几点,因为我是DI/IoC的忠实粉丝 我们使用DI具有以下优点:
这是我的两分钱。如果您沿着DI路线开始,很快就会有一个constrator,它为对象需要的各种依赖项提供20个参数。获取这20个参数需要获取20个其他参数来构建它们。然后,在这一切的最后(开始?),您将认识到您只是将自己与经过仔细考虑的接口的具体实现(通过调用构造函数)耦合在一起。然后,6个月后,您将添加一个新的依赖项,这要求您回溯所有现有的调用并更改它们 DI框架基本上会为您处理这些管道。通过站在您和构造函数之间,它可以查询配置(可能是XML,可能是代码),当它需要一个具体对象时,它会告诉它该怎么做 对于任何具有某种内省的语言来说,基础都非常简单(注册一个具体类型以满足一个接口,当您需要一个接口实例时,然后实例化该类型。遍历构造函数创建的图形并重复)。当您还想控制对象的生命周期时,它变得复杂了(此Logger类应仅实例化一次,然后重新使用。此DataAccessFacade应每个线程实例化一次,等等)或动态选择如何满足依赖关系。DI框架通常会提供对象创建工具(找出构造函数所需的依赖关系)以及服务