构造函数注入、Setter方法注入和接口注入的例子
时间: 2023-12-04 11:05:31 浏览: 81
构造函数注入、Setter方法注入和接口注入都是依赖注入(DI)的实现方式。
构造函数注入:
```java
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
```
在这个例子中,`UserServiceImpl` 类的构造函数接受一个 `UserRepository` 实例作为参数,并将其赋值给类的私有字段。这种方式是最常见的依赖注入方式。
Setter方法注入:
```java
public class UserServiceImpl implements UserService {
private UserRepository userRepository;
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
```
在这个例子中,`UserServiceImpl` 类有一个名为 `setUserRepository` 的 Setter 方法,它接受一个 `UserRepository` 实例作为参数,并将其赋值给类的私有字段。这种方式相对于构造函数注入来说,更加灵活,因为我们可以在任何时候调用 Setter 方法来设置依赖。
接口注入:
```java
public interface UserService {
void setUserRepository(UserRepository userRepository);
}
public class UserServiceImpl implements UserService {
private UserRepository userRepository;
@Override
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
```
在这个例子中,`UserService` 接口有一个名为 `setUserRepository` 的方法,`UserServiceImpl` 类实现了这个接口,并在实现中实现了 `setUserRepository` 方法。这种方式可以通过接口的实现来实现依赖注入。但是这种方式比较少用,因为它需要多写一个接口和实现类,增加了代码量和复杂度。
阅读全文