【发布时间】:2019-07-23 08:32:21
【问题描述】:
我正在使用 @Primary 和 @Qualifier 注释在 Spring Boot 中学习自动装配。我能够理解 @Primary 将带注释的类作为依赖项连接,如果找到多个令人满意的类,@Qualifier 可以提供帮助。
@Component
public class VehicleBean {
@Autowired
@Qualifier("car")
Vehicle car;
public void check() {
car.details();
}
public Vehicle getCar() {
return car;
}
public void setCar(Vehicle car) {
this.car = car;
}
}
自行车
@Component
//@Primary
@Qualifier("car")
public class Bike implements Vehicle {
@Override
public void details() {
System.out.println("Bike is driving");
}
}
汽车
@Component
//@Primary
@Qualifier("bike")
public class Car implements Vehicle {
@Override
public void details() {
System.out.println("Car is driving");
}
}
当我将 @Qualifier("car") 添加到名为“bike”的自动连接依赖项上,并在 Car 上添加 @Qualifier("car") 并在 Bike 上添加 @Qualifier("bike"),它会选择 Car。但是,当我在 Bike 和 Car 上交换 @Qualifier(例如 - 在 Car 上的 @Qualifier("bike"),反之亦然)时,它会拿起自行车。此外,当我将@Qualifier 更改为“在我的名为“car”的自动装配依赖项上骑自行车并在 Bike 上使用 @Qualifier("car") 时,它正在选择 Car。我期待选择 Bike。我是什么不见了?
【问题讨论】:
-
这个问题的一些cmets已经被删除。因此,我重新发布了我的问题-当我在名为“car”的自动装配依赖项上添加 @Qualifier("car") 并在 Bike 上添加 @Qualifier("car") 并在 Car 上添加 @Qualifier("bike") 时,它拿起汽车而不是自行车。为什么?
标签: spring spring-boot