3

这个超类 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

4

1 回答 1

10

有 2 个 bean 类型CrudDAO。因此,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;
    }
于 2017-11-13T05:28:37.267 回答