例如:我有一个像
class TestAnimal {
@Autowired
@Qualifier("animal")
private @IAnimal animal;
void hanlde (){
animal.some();
}
}
interface IAnimal {
void some();
}
@Component
class Lion implements IAnimal{
void some(){}
}
@Component
class Tiger implements IAnimal{
void some(){}
}
@Component
class Hippo implements IAnimal{
void some(){}
}
当我运行服务器时,我遇到了如下异常
原因:org.springframework.beans.factory.nouniquebeandefinitionexception:没有类型为“com.test.animal”的合格bean可用:需要单个匹配bean,但在org.springframework.beans.factory.config.dependencyscriptor.resolvenotunique(dependencyscriptor)找到3:lion,tiger,hippo。java:173).
如何解决这个问题。有没有办法创建运行时对象初始化?
2条答案
按热度按时间cygmwpex1#
spring不知道该注入哪个bean。你的代码里有三个豆子:狮子、老虎和河马。因此在animal字段上方,您应该选择要用@qualifier注解注入哪个bean。e、 如果是狮子,你必须写@qualifier(“狮子”)。同时删除“private@ianimal animal;”行中的@
如果你想动态自动连线,你应该看看https://www.baeldung.com/spring-dynamic-autowire.
7z5jn7bk2#
您需要在限定符注解(“lion”、“tiger”、“hippo”)上编写实现名称,而不是抽象类/接口。