将两个相同的bean注入的ioc容器
时间: 2023-09-08 21:11:02 浏览: 115
在 Spring 中,如果你想要将两个相同类型的 Bean 注入到 IOC 容器中,需要使用 `@Qualifier` 注解来指定具体的 Bean 名称。
假设我们有一个接口 `UserService`,有两个不同的实现类 `UserServiceImpl1` 和 `UserServiceImpl2`,现在我们需要将这两个实现类注入到 IOC 容器中。可以这样做:
```java
public interface UserService {
void addUser();
}
@Service
public class UserServiceImpl1 implements UserService {
@Override
public void addUser() {
System.out.println("UserServiceImpl1.addUser()");
}
}
@Service
public class UserServiceImpl2 implements UserService {
@Override
public void addUser() {
System.out.println("UserServiceImpl2.addUser()");
}
}
```
然后在需要注入的类中使用 `@Autowired` 和 `@Qualifier` 注解来指定具体的 Bean 名称:
```java
@Component
public class UserController {
@Autowired
@Qualifier("userServiceImpl1")
private UserService userService1;
@Autowired
@Qualifier("userServiceImpl2")
private UserService userService2;
}
```
其中,`@Qualifier` 注解中的参数就是对应的 Bean 名称。注意,这里的 `@Qualifier` 注解需要和 `@Autowired` 注解一起使用才能生效。如果没有使用 `@Qualifier` 注解指定 Bean 名称,Spring 会默认使用 Bean 类型来进行注入,如果存在多个相同类型的 Bean,会抛出异常。
阅读全文