Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是依赖注入?_Java_Spring_Dependency Injection - Fatal编程技术网

Java 什么是依赖注入?

Java 什么是依赖注入?,java,spring,dependency-injection,Java,Spring,Dependency Injection,可能重复: Spring是概念依赖注入的框架 DI的目的是什么?它有什么好处?它是如何实现的?开始 另见。(过时) 在其他地方: 试试看: DI的目的是什么 依赖注入的目的是减少应用程序中的耦合,使其更灵活、更易于测试 它有什么好处 对象没有硬编码的依赖项。如果需要更改依赖项的实现,则只需插入不同类型的对象 它是如何实现的 依赖项注入有多种方法。请查看以查看每个示例。一旦理解了这些,就可以开始研究各种依赖注入框架。DI允许我们交换组件,提高可测试性,并确保组件松散耦合。DI允许使用D

可能重复:

Spring是概念依赖注入的框架

DI的目的是什么?它有什么好处?它是如何实现的?

开始

另见。(过时)

在其他地方:

试试看:

DI的目的是什么

依赖注入的目的是减少应用程序中的耦合,使其更灵活、更易于测试

它有什么好处

对象没有硬编码的依赖项。如果需要更改依赖项的实现,则只需插入不同类型的对象

它是如何实现的


依赖项注入有多种方法。请查看以查看每个示例。一旦理解了这些,就可以开始研究各种依赖注入框架。

DI允许我们交换组件,提高可测试性,并确保组件松散耦合。DI允许使用DI容器(如Windsor Castle、Unity、Spring.net、MEF)在运行时解析依赖关系,这些容器允许应用程序进行扩展。

非常简短

DI的目的是什么? 使用依赖项注入,对象本身不定义它们的依赖项,依赖项会根据需要注入到对象中

它有什么好处? 对象不需要知道从何处以及如何获取它们的依赖关系,这会导致对象之间的松散耦合,从而使它们更易于测试

它是如何实现的?
通常,容器根据配置文件或注释管理对象及其依赖项的生命周期。

基本上,您不需要让对象创建依赖项或要求工厂对象为其创建依赖项,而是将所需的依赖项传递给构造函数或通过属性设置器,你把它变成了别人的问题(依赖关系图上的一个对象,或者构建依赖关系图的依赖关系注入器)。我在这里使用的依赖关系是当前对象需要持有引用的任何其他对象。我在第一次阅读依赖关系注入时发现的另一个非常有用的链接:嗨,你能告诉我:当一个类依赖于另一个类时,为什么很难测试?在这方面我读了很多书,但我仍然不明白为什么假设类a使用
new
来声明类B会使测试变得困难。提前非常感谢。@Unheilig Hi,你能告诉我:当一个类依赖于另一个类时,为什么很难进行测试?在这方面我读了很多书,我仍然不明白为什么,比如说,类a使用
new
来声明类B会使测试变得困难。非常感谢。@Unheilig-测试类
A
会很困难,因为您无法为测试指定
B
的行为。请记住,您只想测试您的代码…而不是您的代码所依赖的所有代码。代码中DI最简单、最清晰的解释是: