我正在使用Spring 4.X编写RESTFul应用程序。
在调用远程Web服务的DAO中,我添加了@Service
注释。
但是,在我最近的研究中,我发现@Repository
注释according to Spring适用于DAO:
团队实施传统的J2EE模式,例如"数据访问 对象"也可以将这种刻板印象应用于DAO类 应该了解数据访问之间的区别 在执行此操作之前,对象和DDD样式的存储库。这个注释是 一般的刻板印象和个别团队可能会缩小他们的范围 语义和适当的使用。
我的问题是:
Spring文档是指持久数据的DAO还是可以调用远程服务的DAO?在我的情况下,哪个是最合适的注释?
此致
答案 0 :(得分:1)
你也可以使用像@Component这样的任何刻板印象。根据我的知识,这些刻板印象主要是因为他们如何抛出异常'。你可以通过不同的刻板印象抛出谷歌异常。这就是为什么我们在DAO层使用@Repository,在服务层使用@Service等,以便我们可以轻松处理异常。
此链接将为您提供更多信息。 http://javapapers.com/spring/spring-component-service-repository-controller-difference/
是,Spring文档指的是持久化数据的DAO。在您的情况下,它取决于您调用的服务类型以及您希望如何处理异常。我建议按照上面建议的链接。
答案 1 :(得分:0)
参考 - Spring documentation
Spring提供了进一步的构造型注释:@ Component,@ Service和@Controller。 @Component是任何Spring管理组件的通用构造型。 @Repository,@ Service和@Controller是@Component的特殊化,用于更具体的用例,例如,分别在持久性,服务和表示层中。因此,您可以使用@Component注释组件类,但是通过使用@ Repository,@ Service或@Controller注释它们,您的类更适合通过工具处理或与方面关联。例如,这些刻板印象注释成为切入点的理想目标。在以后的Spring Framework版本中,@ Repository,@ Service和@Controller也可能带有额外的语义。因此,如果您选择在服务层使用@Component或@Service,@ Service显然是更好的选择。同样,如上所述,已经支持@Repository作为持久层中自动异常转换的标记。
@Repository - 这是为了表明该类定义了一个数据存储库。