spring @Qualifier
时间: 2024-01-15 11:04:43 浏览: 132
@Qualifier 是 Spring 框架中的一个注解,用于解决依赖注入中的歧义性问题。当一个接口有多个实现类时,使用 @Qualifier 注解可以指定要注入的具体实现类。
例如,假设有一个接口 Animal,有两个实现类 Dog 和 Cat。在其他类中需要注入 Animal 接口的实例,如果不使用 @Qualifier 注解,Spring 将无法确定要注入哪个实现类的实例。这时可以在注入的地方加上 @Qualifier 注解,指定要注入的实现类的名称。
示例代码如下:
```java
public interface Animal {
void sound();
}
@Component("dog")
public class Dog implements Animal {
@Override
public void sound() {
System.out.println("汪汪汪");
}
}
@Component("cat")
public class Cat implements Animal {
@Override
public void sound() {
System.out.println("喵喵喵");
}
}
@Component
public class AnimalService {
private final Animal dog;
private final Animal cat;
public AnimalService(@Qualifier("dog") Animal dog, @Qualifier("cat") Animal cat) {
this.dog = dog;
this.cat = cat;
}
public void makeSounds() {
dog.sound();
cat.sound();
}
}
```
在上述代码中,通过在构造函数参数上使用 @Qualifier 注解,分别指定了要注入的 Dog 和 Cat 实例。这样在调用 AnimalService 的 makeSounds 方法时,将会输出 "汪汪汪" 和 "喵喵喵"。
阅读全文