我应该将@Repository Spring注释用于负责在文件系统上保存数据的bean

时间:2012-09-25 14:22:36

标签: java spring filesystems repository-pattern

我的应用程序中有三层:

  • REST界面(JBOSS RestEasy)
  • 服务层(春季服务)
  • 持久层(Spring beans)

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

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

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

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

2 个答案:

答案 0 :(得分:6)

班级javadoc说:

  

这样注释[使用@Respository]的类符合Spring的条件   与a一起使用时的DataAccessException转换   PersistenceExceptionTranslationPostProcessor。带注释的类是   还澄清了它在整个应用程序架构中的作用   用于工具,方面等目的。

我相信你必须使用@Repository注释你的类,如果你需要特殊的异常翻译(来自JDBC,Hibernate或其他)或你自己的技术(但这意味着你必须延长春天来了解这一点)否则,只需用@Component注释。

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

答案 1 :(得分:0)

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

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

  • JpaRepository
  • MongoDbRepository

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