【发布时间】:2020-04-09 23:12:04
【问题描述】:
假设我有两个名为Vehicle、Bike 和Car 的接口实现。我还有一个班级,名为TireStore。我还有另外两个类,我们将它们命名为PersonA 和PersonB。我想要做的是每当我在PersonA 中使用TireStore 时,我希望Car 被注入。每当我使用PersonB 时,我都希望Bike 以Vehicle 的形式注入到TireStore。不知道有没有可能……
到目前为止,我已经尝试用@Qualifier("exampleQualifier") 和Car 来注释PersonA。然后我将Bike注释为@Primary。
没用。搜索了一下,没有找到解决办法。
提前谢谢你。
它们的结构是这样的:
@Component
public class PersonA{
private TireStore TireStore;
public TireStore(TireStore tireStore){
this.tireStore = tireStore;
}
...
}
@Component
public class PersonB{
private TireStore tireStore;
public TireStore(TireStore tireStore){
this.tireStore = tireStore;
}
...
}
@Component
public class TireStore{
private Vehicle vehicle;
public TireStore(Vehicle vehicle){
this.vehicle = vehicle;
}
...
}
@Component
public class Bike extends Vehicle{
...
}
@Component
public class Car extends Vehicle{
...
}
【问题讨论】:
-
详细阅读限定符的工作原理。解决方案就快完成了。
-
另外,听起来你的设计不太有效。为什么人拥有
TireStore?为什么TireStore拥有Vehicle?为什么一个人只知道TireStore而不知道Vehicle?或者这只是minimal reproducible example 的任意示例? -
这只是我首先想到的事情的一个例子:)
标签: java spring dependency-injection