Spring 容器啟動時拋出:
NoUniqueBeanDefinitionException: No qualifying bean of type [com.lzh.dao.IBaseDao] is defined: expected single matching bean but found 2: baseDaoImpl,userDaoImpl
原因明確:介面 IBaseDao 有兩個實現類(BaseDaoImpl、UserDaoImpl)被掃描為 Bean,當 BaseServiceImpl 以 @Autowired 注入 IBaseDao 時,Spring 不知道選哪個。
@Autowired
@Qualifier("baseDaoImpl") // 或 "userDaoImpl"
private IBaseDao baseDao;
@Repository
@Primary
public class BaseDaoImpl implements IBaseDao { ... }
@Autowired
private IBaseDao baseDaoImpl; // 字段名 = bean 名
@Resource(name = "baseDaoImpl")
private IBaseDao baseDao;
核心原則:讓 Spring 明確知道該注入哪個具體實現。