我的应用程序中有三层:
在持久层中,我将实现两个类(实现相同的接口):一个是MemoryStore
,另一个是FileSystemStore
。
这些实现是否应由@Repository
注释?
这两个类没有任何数据库访问权限。它可以在以后实现到DatabaseStore,但现在情况并非如此。
更一般地说,注释@Repository
是否必须用于任何持久性Bean或仅用于访问数据库的人?
答案 0 :(得分:6)
班级javadoc说:
这样注释[使用@Respository]的类符合Spring的条件 与a一起使用时的DataAccessException转换 PersistenceExceptionTranslationPostProcessor。带注释的类是 还澄清了它在整个应用程序架构中的作用 用于工具,方面等目的。
我相信你必须使用@Repository注释你的类,如果你需要特殊的异常翻译(来自JDBC,Hibernate或其他)或你自己的技术(但这意味着你必须延长春天来了解这一点)否则,只需用@Component注释。
在您的特定情况下,我认为使用@Repository注释是正确的,因为您的界面是为数据持久性而设计的。
答案 1 :(得分:0)
这不仅仅是关于@Repository注释,而是关于该类的原型。如果它是一个存储库类,那么它可能会被命名为XxxxxRepository并具有@Repository注释。
存储库可以有不同的实现,例如:
您可以将文件系统repo添加为另一个实现。这似乎符合回购模式。