@Primary的代码示例
时间: 2023-07-08 19:09:34 浏览: 34
假设我们有两个同类型的Bean:`Dog`和`Cat`,如果我们想优先选择`Dog`作为自动装配的对象,可以使用`@Primary`注解。下面是一个简单的示例:
```java
public interface Animal {
void speak();
}
@Component
@Primary
public class Dog implements Animal {
@Override
public void speak() {
System.out.println("汪汪汪!");
}
}
@Component
public class Cat implements Animal {
@Override
public void speak() {
System.out.println("喵喵喵!");
}
}
@Service
public class AnimalService {
@Autowired
private Animal animal;
public void speak() {
animal.speak();
}
}
```
在这个例子中,我们定义了两个实现`Animal`接口的类:`Dog`和`Cat`。在`Dog`类上添加了`@Primary`注解,表示它是首选的Bean。在`AnimalService`类中,我们使用`@Autowired`注解将`Animal`接口类型的对象自动装配到`animal`字段上。
当我们运行`speak()`方法时,由于`Dog`类被标记为`@Primary`,所以会选择`Dog`类作为自动装配的对象,输出结果为"汪汪汪!"。如果我们将`@Primary`注解放在`Cat`类上,则会选择`Cat`类作为自动装配的对象,输出结果为"喵喵喵!"。