spring框架:预期单个匹配bean但找到2

时间:2017-11-13 05:14:50

标签: spring spring-framework-beans

这个超类DAO:

public class CrudDAO{

}

这个孩子班:

@Repository
public class JnsTimeDao extends CrudDAO {

}

@Repository
public class BatchDAO extends CrudDAO {
}

这个超级服务类

@Transactional(readOnly = true)
public abstract class CrudService<D extends CrudDAO> {

    @Autowired
    protected D dao;
}

启动错误:

  

org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有   定义[com.gp.dao.CrudDAO]类型的限定bean:预期   单个匹配bean但找到2:batchDAO,jnsTimeDao

1 个答案:

答案 0 :(得分:5)

有两种CrudDAO类型的bean。所以,Spring将无法理解要注入哪个bean。可以解决如下

@Repository("jnsTimeDao")
public class JnsTimeDao extends CrudDAO {

}

@Repository("batchDao")
public class BatchDAO extends CrudDAO {
}

注入使用时@Qualifier

 @Transactional(readOnly = true)
    public abstract class CrudService<D extends CrudDAO> {

        @Autowired
        @Qualifier("batchDao")
        protected D dao;
    }