【问题标题】:Placing repository impl in not base-package将存储库 impl 放在非基础包中
【发布时间】:2011-11-10 04:14:17
【问题描述】:

我不想将我的自定义存储库实现与域包分开。而且,可能是一些常见的接口。例如我想要有类似的结构

  com
       domain
            Foo
            FooRepository
       common
            Bar
       persistence
            BarImpl

interface FooRepository extends Bar{}

<jpa:repositories base-package="com.domain" /> // smt else?

我应该如何配置这个?

【问题讨论】:

  • 有什么问题?它应该工作

标签: java spring spring-data


【解决方案1】:

仅当您将存储库类放在同一个包中并使用默认后缀或定义后缀以手动使用时,存储库类的自动拾取才有效。因此,在您的场景中,您必须将 FooRepositoryImpl 放入 domain 包中。您可以使用repository-impl-postfix 属性自定义后缀。如果您想将实现放入另一个包中,您可以使用 fooRepositoryImpl 作为 bean id 手动声明自定义实现 bean。然后该类可以驻留在您想要的任何包中。

我假设Bar 是包含自定义方法声明的接口。实际上,我们建议将自定义存储库接口和实现都放在同一个包中,并使其受到包保护,以避免客户端单独使用它。这样,客户端实际看到的只是包含查询方法和手动实现的统一存储库接口。

【讨论】:

  • 感谢您的回复。实际上,我不认为将自定义实现与域存储库放在一起是个好方法。我认为应该有其他方式来声明实现。
猜你喜欢
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多