Spring 中有 基于 field 注入(成员变量注入)、基于 setter 注入、基于 constructor 注入(构造器注入)3种依赖注入的方式。代码示例
时间: 2024-09-18 13:14:10 浏览: 39
在Spring框架中,依赖注入(DI)是通过将对象之间的依赖关系管理起来,使得代码更加解耦和易于测试。这里有三种常见的依赖注入方式:
1. **基于字段的注入(Field Injection)**: 这种方式直接操作对象的属性(成员变量)。当Spring发现匹配的bean和需要注入的字段时,会自动设置值。例如:
```java
@Autowired
private MyService myService;
```
这里的`@Autowired`注解告诉Spring使用默认的行为(无特定名字匹配)对`myService`字段进行注入。
2. **基于setter方法的注入(Setter Injection)**: 使用`setXXX()`方法来接收依赖。比如:
```java
public class MyClass {
private MyDependency dependency;
@Autowired
public void setDependency(MyDependency dependency) {
this.dependency = dependency;
}
}
```
这里Spring会在创建`MyClass`实例时调用`setDependency()`方法注入依赖。
3. **基于构造器的注入(Constructor Injection)**: 引入的依赖作为构造函数参数。Spring会查找匹配的bean并构造新实例。例如:
```java
@Service
public class MyServiceBean (@Qualifier("mySpecialDependency") MyDependency dependency) {
//...
}
```
在这里,`@Qualifier`用于指定注入的具体依赖实例。
阅读全文