我必须实现用@Repository
注释的自定义存储库类,该类应该继承另一个用@Repository
注释的类。
该用例的正确实现是什么?可以直接继承该类并将@Repository
添加到main中,还是有另一种最佳实践?实际上,当我定义时
@EnableJpaRepositories(basePackages = { "com.example.foo.repositories", "com.example.bar.repositories" }
在根目录的
@Configuration
类中,它不会扫描我的存储库,也无法自动装配它。这是我的存储库类的示例:
父存储库(第三方类):
@Repository
public abstract class ParentRepository {
// ...
}
包
com.example.foo.repositories
中的interface和impl类:public interface IFooRepository {
Foo getFoo();
}
@Repository
public class FooRepository extends ParentRepository implements IFooRepository {
Foo getFoo() {
// ...
}
}
您是否知道如何解决它并使自动连接IFooRepository成为可能?
谢谢你的指教。
编辑:
我在@EnableJpaRepositories旁边发现了一个绿色的bean,当我单击该bean时,它会将我重定向到bar存储库,并且不显示FooRepository Bean。我不明白,因为两个存储库都实现相同。
最佳答案
根据JPA储存库的文档
在前面的示例中,指示Spring扫描com.acme.repositories及其所有子包,以获取扩展Repository的接口或其子接口之一。对于找到的每个接口,基础结构都会注册特定于持久性技术的FactoryBean,以创建处理查询方法调用的适当代理。
see
因此,基本上@EnableJpaRepositories
-与链接中的xml配置相同-它指示查找扩展Repository
的类。在您的示例中,您具有@Repository
注释-指示Spring转换异常。您应将"com.example.foo.repositories", "com.example.bar.repositories"
包括在组件扫描中。尝试@ComponentScan
注释see
关于java - 在Spring数据存储库中正确继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53781246/