从 Spring (v4.3.8) 开始,当 Spring 尝试加载依赖注入时遇到问题。
我想根据 T 的类型(Debit1 或 Debit2)调用 ManagerImpl1.java 或 ManagerImpl2.java 实现的“管理”方法。详细信息如下:
引起:org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有类型为“com.xxx.xxx.datacollection.infoprod.Manager”的合格bean可用:预期单个匹配bean但找到2:ManagerImpl1,ManagerImpl2
业务.java:
@Component
public class Business<T extends Debit> {
@Autowired
private Manager<T> manager;
public void treatment(Context<T> context, FindServiceReturnMessage response) {
manager.manage(response, context);
}
Run Code Online (Sandbox Code Playgroud)
管理器.java:
public interface Manager<T extends Debit> {
void manage(final FindServiceReturnMessage response, Context<T> context);
}
Run Code Online (Sandbox Code Playgroud)
ManagerImpl1.java:
@Component
public class ManagerImpl1 implements Manager<Debit1> {
@Override
public void manage(final FindServiceReturnMessage response, Context<Debit1> context) {
}
}
Run Code Online (Sandbox Code Playgroud)
ManagerImpl2.java:
@Component
public class ManagerImpl2 implements Manager<Debit2> {
@Override …
Run Code Online (Sandbox Code Playgroud)