什么是依赖注入?

sri*_*ram 2 java import dependency-injection jar

可能重复:
什么是控制反转?

我真的对依赖注入的概念感到困惑.

我对软件领域很陌生,我对以下情况有疑问.假设Json我的java代码需要一个解析器类,所以我在Json使用classpath参数执行java程序时添加了jar .我的程序依赖于Jsonjar,这意味着我在这里进行依赖注入

另一个例子是,using import语句确实解决了用户类依赖于其他类的问题(比如Datejava)所以这些都是依赖注入的概念吗?

我正在制作这个概念.

提前致谢.

Bri*_*new 8

这与将组件链接在一起的方式有很大关系.例如,在上面,我希望你将解析器注入需要它的类中.例如

代替:

public class MyParserUsingClass {
   ...
   public MyParserUsingClass() {
      this.parser = new Parser();
   }
}
Run Code Online (Sandbox Code Playgroud)

你会这样做:

public class MyParserUsingClass {
   ...
   public MyParserUsingClass(Parser injectedParser) {
      this.parser = injectedParser;
   }
}
Run Code Online (Sandbox Code Playgroud)

为什么这样?使用解析器的类并不真正关心解析器的来源,应该真正使用接口而不是具体的实例.通过注入解析器,您可以根据具体情况提供不同的实例,将其模拟出来进行测试等.否则,类只会在内部创建它而您无法控制它.这对于可配置组件,跨网络通信的组件,重量级组件等尤为关键.