java - 我应该为负责在文件系统上持久保存数据的 bean 使用 @Repository Spring 注释吗?

标签 java spring filesystems repository-pattern

我的应用程序有三层:

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

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

这些实现应该用@Repository注解吗?

这两个类将没有任何数据库访问权限。它可以稍后出现在 DatabaseStore 的实现中,但现在不是这样了。

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

最佳答案

类(class)javadoc说:

A class thus annotated [with @Respository] is eligible for Spring DataAccessException translation when used in conjunction with a PersistenceExceptionTranslationPostProcessor. The annotated class is also clarified as to its role in the overall application architecture for the purpose of tooling, aspects, etc.

如果您需要特殊的异常转换(来自 JDBC、Hibernate 或其他)或您自己的技术(但这意味着您必须扩展 spring 才能知道这一点),我相信您必须使用 @Repository 注释您的类,否则,只需使用@Component 进行注释即可。

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

关于java - 我应该为负责在文件系统上持久保存数据的 bean 使用 @Repository Spring 注释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585037/

相关文章:

java - 错误 java.util.Date

java - 使用 ESP Scheduler 进行 Spring 批量调度

linux - write() 到文件什么时候返回 EWOULDBLOCK?

java - 特定情况下的舍入

java - 在 JFrame 中使用 BoxLayout

java - 如何使用 Spring MVC 获取用户 ID?

windows - 一些支持 "\Device\Xxx"格式的NT命名空间绝对路径的API

linux - 设备何时从文件系统获得 512B 请求?

java - 内存数据库使用maven使用内存数据库测试mysql数据库操作API

java - 如何使用 Hibernate 进行大量插入?