4

我的应用程序中有三层:

  • REST 接口 (JBOSS RestEasy)
  • 服务层(Spring Services)
  • 持久层(Spring bean)

在持久层中,我将实现两个类(实现相同的接口):一个是 a MemoryStore,另一个是FileSystemStore

这些实现是否应该由 注释@Repository

这两个类将没有任何数据库访问权限。它可以稍后实现到 DatabaseStore,但现在情况并非如此。

更一般地说,注解@Repository必须用于任何持久性 Bean 还是仅用于访问数据库的人?

4

2 回答 2

6

javadoc说:

当与 PersistenceExceptionTranslationPostProcessor 一起使用时,这样注释的类 [with @Respository] ​​有资格进行 Spring DataAccessException 转换。注释类也被阐明了它在整个应用程序架构中的作用,用于工具、方面等。

我相信如果您需要特殊的异常翻译(来自 JDBC、Hibernate 或其他)或您自己的技术(但这意味着您必须扩展 spring 以了解这一点),您必须使用 @Repository 注释您的类,否则,只需注释@零件。

在您的特定情况下,我认为使用 @Repository 进行注释是正确的,因为您的界面是为数据持久性而设计的。

于 2012-09-25T14:31:02.197 回答
0

这不仅仅是关于 @Repository 注释,而是关于类是什么原型。如果它是一个存储库类,那么它可能会被命名为 XxxxxRepository 并具有 @Repository 注释。

存储库可以有不同的实现,例如:

  • JpaRepository
  • MongoDb存储库

您可以将文件系统存储库添加为另一个实现。这似乎符合回购模式。

于 2012-09-25T19:49:58.133 回答