编辑这个页面须要登录或更高权限!
依赖注入(DI)是一种设计模式,可以从编程代码中删除依赖,以便可以轻松管理和测试应用程序。依赖注入使我们的编程代码松散耦合。为了更好地理解DI,让我们首先了解依赖关系查找(DL):
依赖查找是一种在需求之后获取资源的方法。例如,可以有多种获取资源的方法:
A obj = new AImpl();
这样,我们可以通过new关键字直接获取资源(A类的实例)。另一种方法是工厂方法:
A obj = A.getA();
这样,我们通过调用静态工厂方法getA()获取资源(A类的实例)。
或者,我们可以通过JNDI(Java命名目录接口)获取资源。 :
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup("java:comp/env"); A obj = (A)environmentCtx.lookup("A");
可以有多种获取资源的方法来获取资源。让我们看看这种方法的问题。
主要有两个依赖关系查找问题。
紧密耦合: 依赖关系查找方法使代码紧密耦合。如果更改了资源,则需要对代码进行大量修改。 测试不容易: 这种方法在测试应用程序时会产生很多问题,尤其是在黑盒测试中。
依赖注入是一种设计模式,它消除了程式。在这种情况下,我们提供来自外部源(例如XML文件)的信息。它使我们的代码松散耦合,并且更易于测试。在这种情况下,我们将代码编写为:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
在这种情况下,Address类的实例由外部源(例如XML文件)通过构造函数或setter方法提供。
Spring框架提供了两种注入依赖项的方法
通过构造方法 通过Setter方法