首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时使用@RestController与@RepositoryRestResource

何时使用@RestController与@RepositoryRestResource
EN

Stack Overflow用户
提问于 2014-04-02 23:08:40
回答 4查看 66.1K关注 0票数 96

我一直在研究如何在REST中使用Spring的各种示例。我们的最终目标是一个Spring HATEOAS/HAL设置

我看到了在Spring中呈现REST的两种不同方法

  1. 通过控制器内的@RestController
  2. 通过存储库中的@RepositoryRestResource

我很难找到的是你为什么要用一种而另一种。当尝试实现HAL时,哪一个是最好的?

我们的数据库后端是Neo4j

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-20 13:46:14

好的,所以简单地说,您希望使用@RepositoryRestResource,因为这会创建一个带有Spring HATEOAS服务。

如您所见,这里添加了这个注释并将其链接到Pojo,您就有了一个功能齐全的HATEOAS服务,而不必实现存储库方法或REST服务方法。

如果您添加了@RestController,那么您必须实现要单独公开的每个方法,而且它也不会将其导出为HATEOAS格式。

票数 69
EN

Stack Overflow用户

发布于 2015-11-10 18:23:10

有第三个(和第四个)选项,您还没有概述,即使用@BasePathAwareController或@RepositoryRestController,这取决于您是否正在执行特定于实体的操作。

@RepositoryRestResource用于在公共存储库接口上设置选项-它将根据正在扩展的存储库类型(即CrudRepository/PagingAndSortingRepository/etc). ),酌情自动创建端点

@BasePathAwareController和@RepositoryRestController用于手动创建端点,但希望使用已设置的Spring数据REST配置。

如果使用@RestController,您将创建一组具有不同配置选项(例如,不同的消息转换器、不同的错误处理程序等)的并行端点集,但它们将愉快地共存(可能会造成混淆)。

特定的文档可以找到这里

票数 42
EN

Stack Overflow用户

发布于 2015-12-03 08:41:24

嗯,上面的答案在他们的上下文中是正确的

在许多情况下,作为API的一部分,我们需要提供端点,以便根据特定的标准搜索实体。现在使用JPA,您甚至不必编写查询,只需使用Spring的特定名称创建一个接口和方法即可。为了公开这些API,您将创建服务层,它将简单地调用这些存储库方法,最后,控制器将通过调用服务层来公开端点。

Spring在这里所做的是,允许您从这样的接口(存储库)公开这些端点,这些接口通常是调用搜索实体,并在后台生成创建最终端点所需的文件。因此,如果使用@RepositoryRestResource,则不需要创建服务/控制器层。

另一方面,@RestController是一个控制器,它作为控制器专门处理json数据和rest工作。简而言之,@Controller + @ResponseBody = @RestController。

希望这能有所帮助。

请参阅我的工作示例和博客中的相同内容:

http://sv-technical.blogspot.com/2015/11/spring-boot-and-repositoryrestresource.html

https://github.com/svermaji/Spring-boot-with-hibernate-no-controller

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22824840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档