Spring依赖注入(Dependency Injection,DI)是Spring框架的一个核心特性,它是一种通过容器来管理对象之间的依赖关系的方式。在DI中,对象不再负责创建它所依赖的对象,而是由容器负责将依赖注入到对象中。

Spring框架提供了多种方式来进行依赖注入:

1. 构造函数注入(Constructor Injection):
   在对象的构造函数中注入依赖,通过构造函数参数来实现。
   public class MyClass {
       private MyDependency dependency;

       public MyClass(MyDependency dependency) {
           this.dependency = dependency;
       }
   }

2. Setter方法注入(Setter Injection):
   使用Setter方法来注入依赖。
   public class MyClass {
       private MyDependency dependency;

       public void setDependency(MyDependency dependency) {
           this.dependency = dependency;
       }
   }

3. 接口注入(Interface Injection):
   通过实现特定的接口来实现依赖注入。
   public interface MyInterface {
       void setDependency(MyDependency dependency);
   }

   public class MyClass implements MyInterface {
       private MyDependency dependency;

       @Override
       public void setDependency(MyDependency dependency) {
           this.dependency = dependency;
       }
   }

4. 字段注入(Field Injection):
   直接在字段上使用@Autowired注解进行注入。
   public class MyClass {
       @Autowired
       private MyDependency dependency;
   }

在Spring中,通常使用XML配置、Java注解或者Java配置类来描述Bean及其依赖关系。以下是一个简单的XML配置的例子:
<bean id="myDependency" class="com.example.MyDependency" />

<bean id="myClass" class="com.example.MyClass">
    <!-- 构造函数注入 -->
    <constructor-arg ref="myDependency" />
</bean>

或者使用Java配置类:
@Configuration
public class AppConfig {

    @Bean
    public MyDependency myDependency() {
        return new MyDependency();
    }

    @Bean
    public MyClass myClass(MyDependency myDependency) {
        return new MyClass(myDependency);
    }
}

在以上例子中,MyClass依赖于MyDependency,Spring容器会负责在创建MyClass时将MyDependency注入到MyClass中。依赖注入使得对象之间的关系更加松散,提高了代码的可维护性和可测试性。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6941/Spring