这个超类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
答案 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;
}