首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Spring MVC 啟動報錯:NoUniqueBeanDefinitionException 兩個 IBaseDao 實現類衝突

     編輯:程式設計疑難解答

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 不知道選哪個。

解決方案(任選一種)

1. 使用 @Qualifier 指定 Bean 名稱

@Autowired
@Qualifier("baseDaoImpl") // 或 "userDaoImpl"
private IBaseDao baseDao;

2. 標註 @Primary 設定首選

@Repository
@Primary
public class BaseDaoImpl implements IBaseDao { ... }

3. 按名稱自動裝配(字段名匹配 Bean 名)

@Autowired
private IBaseDao baseDaoImpl; // 字段名 = bean 名

4. 使用 @Resource (JSR-250)

@Resource(name = "baseDaoImpl")
private IBaseDao baseDao;

核心原則:讓 Spring 明確知道該注入哪個具體實現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved