[英]Id for Spring Bean/Repository
我有一個存儲庫B,它是從另一個存儲庫A擴展的。
儲存庫A:
@Repository
public class RepositoryA implements Repository {
}
資料庫B:
@Repository
public class RepositoryB extends RepositoryA implements RepositoryAux{
}
但是,當我嘗試注入存儲庫時,出現以下錯誤:
沒有定義[Repository]類型的唯一bean:需要單個匹配的bean,但是找到了2:[RepositoryA,RepositoryB]
我知道我可以使用@Qualifier注釋解決它。 但是,我的問題是:
是的,在子類中覆蓋注解@Repository嗎?
我可以給子類分配一個新的標識符嗎? 而不是使用@Qualifier注釋,而是@Id或@Name之類的東西
提前致謝
- 是的,在子類中覆蓋注解@Repository嗎?
您應該考慮以下幾點:
一種。 如果打算將RepositoryA
用作存儲庫,則兩者都需要@Repository
。
b。 如果您打算僅使用RepositoryA
來提供基本功能,以便RepositoryB
(或其他類)可以對其進行擴展,則使RepositoryA
抽象並使用NoRepositoryBean
注釋。
C。 或者,您可以使用“ 組成繼承 ”原則。 簡而言之,您可以將RepositoryA
注入RepositoryB
並創建Facade或wrapper方法來訪問RepositoryB
實例上的方法。
- 我可以給子類分配一個新的標識符嗎? 而不是使用@Qualifier注釋,而是@Id或@Name之類的東西
我認為您的意思是javax.inject.Named
中的@Named
,基本上等同於@Qualifier
我認為您的意思是<bean id='...'
,在這種情況下,@ @Qualifier
是使用批注的方式。 請參閱spring的文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.