引起:NoUniqueBeanDefinitionException:没有可用类型的合格 bean:预期有单个匹配 bean,但发现 2

问题描述 投票:0回答:1

问题陈述:两个同名的bean之间存在冲突

示例场景

界面

public interface FakeInterface{
}

充当bean的实现

@Slf4j
@Service
public class IfakeInterfaceOne1 implements FakeInterface{
}
@Slf4j
@Service
public class IfakeInterfaceTwo2 implements FakeInterface{
}

主要问题来自于我自动接线的地方

项目中的某个地方

@Autowire
FakeInterface myInterface;

注意 我不想接触 IfakeInterfaceOne1 类,因为它被许多其他类使用

我们可以做的任何实验都是使用 IfakeInterfaceTwo2

请帮助我。

谢谢,提前。

java spring-boot javabeans autowired spring-bean
1个回答
0
投票

如果您自动装配接口,它将无法决定应使用 2 个实现中的哪一个,因此会返回异常。

您可以使用限定符来消除两个实现之间的歧义。例如:

@Slf4j
@Service
@Qualifier("one")
public class IfakeInterfaceOne1 implements FakeInterface{
}
@Slf4j
@Service
@Qualifier("two")
public class IfakeInterfaceTwo2 implements FakeInterface{
}

然后当你自动装配它时:

@Autowired
@Qualifier("one") 
FakeInterface myInterface;

在此示例中,将使用

FakeInterface
的第一个实现

© www.soinside.com 2019 - 2024. All rights reserved.