我必须实现用@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/

10-10 00:53
查看更多