Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RESTAPI调用是否应该在@repository的存储库层上?_Java_Spring Boot_Design Patterns - Fatal编程技术网

Java RESTAPI调用是否应该在@repository的存储库层上?

Java RESTAPI调用是否应该在@repository的存储库层上?,java,spring-boot,design-patterns,Java,Spring Boot,Design Patterns,在我的实际项目中,我们遇到了一个难题,在我在其他公司的团队中,我们总是使用@Repository从SpringBoot调用API来检索存储库层上的数据,即使它们是一个简单的RestTemplate getForEntity。但在这里,我像往常一样做了,我们开始讨论它是否应该位于存储库层,称为存储库,以及它是否需要@repository注释,可以只使用@Service或@Component 就我个人而言,所有数据访问层操作都应该在存储库层上是有意义的,即使它是API或数据库,只要它检索到应该在那里

在我的实际项目中,我们遇到了一个难题,在我在其他公司的团队中,我们总是使用@Repository从SpringBoot调用API来检索存储库层上的数据,即使它们是一个简单的RestTemplate getForEntity。但在这里,我像往常一样做了,我们开始讨论它是否应该位于存储库层,称为存储库,以及它是否需要@repository注释,可以只使用@Service或@Component

就我个人而言,所有数据访问层操作都应该在存储库层上是有意义的,即使它是API或数据库,只要它检索到应该在那里的数据,我唯一怀疑的是使用@repository,因为这更适用于Spring数据自己的存储库

您认为API调用应该在存储库层上还是在服务层上?

来自:

表示带注释的类是“存储库”,最初由域驱动设计(Evans,2003)定义为“用于封装存储、检索和搜索行为的机制,模拟对象集合”。 实现“数据访问对象”等传统JavaEE模式的团队也可以将此原型应用于DAO类,不过在这样做之前,应该注意理解数据访问对象和DDD样式存储库之间的区别。此注释是一个通用的原型,各个团队可能会缩小其语义范围,并根据需要使用

当与PersistenceExceptionTranslationPostProcessor结合使用时,这样注释的类有资格进行SpringDataAccessException转换。注释类还阐明了它在整个应用程序体系结构中的作用,用于工具、方面等

从Spring2.5开始,此注释还作为@Component的专用化,允许通过类路径扫描自动检测实现类

如您所见,它不是专门针对Spring数据存储库的


虽然Spring Data检测到
@Repository
,但您也可以安全地将它们用于其他存储库,至少如果它是用于数据访问的。

我想我会尝试始终采用分层方法,它有助于我理解和测试服务。