NoUniqueBeanDefinitionException异常


服务启动时报了该异常。

 在controller类中有如下代码片段:

public static void main(String[] args) {

  @Autowired

  pricvate TestFactory testFactory;

1: public void test(type){

2:  AbstractTest abstractTest = testFactory.createImpl(type);

3: Content content = new Content(abstractTest);

4: content.doXx();

}

一个抽象类AbstractTest

两个具体的实现类AImpl BImpl

一个上下文内类Content ,目的:组织抽象类多个方法的调用的顺序

一个工厂类TestFactory 。目的:根据不同入入参返回不同的实现类的实例

前提:是属于spring框架,所以除过抽象类的所有类都加了@Component注解,将been管理交由spring容器。

问题分析:1、服务启动时spring通过@Componnet要初始化所有的bean 

     2、当初始化Content 时,里面的属性是抽象类,且抽象类有两个实现,所以导致了启动时的异常 

解决方式:去掉Content类的@Component注解,在方法调用时通过 new创建bean