我不想将我的自定义存储库实现与域包分开。而且,可能是一些通用接口(interface)。例如我想要有这样的结构
com
domain
Foo
FooRepository
common
Bar
persistence
BarImpl
interface FooRepository extends Bar{}
<jpa:repositories base-package="com.domain" /> // smt else?
我应该如何配置它?
最佳答案
仅当您将存储库类放在同一个包中并使用默认后缀或定义要手动使用的后缀时,存储库类的自动拾取才有效。因此,在您的场景中,您必须将 FooRepositoryImpl
放入 domain
包中。您可以使用 repository-impl-postfix
属性自定义后缀。如果您想将实现放入另一个包中,您可以使用 fooRepositoryImpl
作为 bean id 手动声明自定义实现 bean。然后该类可以驻留在您想要的任何包中。
我假设 Bar
是包含自定义方法声明的接口(interface)。实际上,我们建议将自定义存储库接口(interface)和实现都放在同一个包中,并对其进行包保护,以避免单独提供给客户。这样,客户端实际看到的只是包含查询方法和手动实现方法的统一存储库界面。
关于java - 将存储库 impl 放在非基础包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300794/