[英]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.