Spring 依赖注入
依赖注入(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框架中执行依赖注入的两种方法
Spring框架提供了两种注入依赖项的方法
通过构造方法 通过Setter方法
Spring 依赖项构造方法注入示例
具有依赖对象的构造函数注入
Constructor注入以及示例
Constructor注入(具有从属对象)示例
Constructor注入和Map示例
Constructor注入(具有相关对象)示例
Spring Bean继承
Spring setter方法注入
Setter注入和依赖对象示例
Setter注入和集合示例
Setter注入(具有相关对象)示例
Setter注入和Map示例
带非字符串映射的Setter注入示例
构造函数与setter注入之间的区别
具有依赖对象的构造函数注入
Constructor注入以及示例
Constructor注入(具有从属对象)示例
Constructor注入和Map示例
Constructor注入(具有相关对象)示例
Spring Bean继承
Spring setter方法注入
Setter注入和依赖对象示例
Setter注入和集合示例
Setter注入(具有相关对象)示例
Setter注入和Map示例
带非字符串映射的Setter注入示例
构造函数与setter注入之间的区别