依赖注入(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依赖注入的下一个主题

构造函数依赖注入

让我们看看如何通过构造函数注入依赖。

Setter方法依赖注入

让我们看看如何通过Setter方法注入依赖。

标签: spring, Spring教程, Spring技术, Spring语言学习, Spring学习教程, Spring下载, Spring框架, Spring框架入门, Spring框架教程, Spring框架高级教程, Spring面试题, Spring笔试题, Spring编程思想