此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data REST 4.5.3spring-doc.cadn.net.cn

将 Spring Data REST 添加到现有的 Spring MVC 应用程序

如果您使用 Spring Boot,则不需要以下步骤。对于启动应用程序,将spring-boot-starter-data-rest自动将 Spring Data REST 添加到您的应用程序中。

您可以将 Spring Data REST 与现有的 Spring MVC 应用程序集成。在 Spring MVC 配置中(很可能是在配置 MVC 资源的位置),添加一个 bean 引用到负责配置RepositoryRestController.类名是org.springframework.data.rest.webmvc.RepositoryRestMvcConfiguration.以下示例演示如何使用@Import注释以添加正确的引用:spring-doc.cadn.net.cn

配置如下所示:spring-doc.cadn.net.cn

Java
import org.springframework.context.annotation.Import;
import org.springframework.data.rest.webmvc.RepositoryRestMvcConfiguration;

@Configuration
@Import(RepositoryRestMvcConfiguration.class)
public class MyApplicationConfiguration {

  …
}
XML
<bean class="org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration"/>

当您的 ApplicationContext 遇到此 bean 定义时,它会引导必要的 Spring MVC 资源以完全配置控制器以导出它在其中找到的存储库ApplicationContext以及任何父上下文。spring-doc.cadn.net.cn

有关所需配置的更多信息

Spring Data REST 依赖于几个 Spring MVC 资源,这些资源必须正确配置才能在现有 Spring MVC 应用程序中工作。我们试图将这些资源与应用程序中已经存在的任何类似资源隔离开来,但您可能希望通过修改这些 MVC 组件来自定义 Spring Data REST 的某些行为。spring-doc.cadn.net.cn

配置时应特别注意RepositoryRestHandlerMapping,下一节将介绍。spring-doc.cadn.net.cn

RepositoryRestHandlerMapping

我们注册一个自定义HandlerMapping实例,该实例仅响应RepositoryRestController并且仅当路径由 Spring Data REST 处理时。为了将应用程序处理的路径与 Spring Data REST 处理的路径分开,此自定义HandlerMappingclass 检查 URL 路径并检查存储库是否已以该名称导出。如果有,则自定义HandlerMappingclass 允许请求由 Spring Data REST 处理。如果没有以该名称导出的存储库,则返回null,意思是“让其他HandlerMapping实例尝试为此请求提供服务“。spring-doc.cadn.net.cn

The Spring Data RESTHandlerMapping配置为order=(Ordered.LOWEST_PRECEDENCE - 100),这意味着在映射 URL 路径时,它通常是第一个排在第一位的。您现有的应用程序永远没有机会为存储库的请求提供服务。例如,如果您以person,则对应用程序的所有请求以/person由 Spring Data REST 处理,并且您的应用程序永远不会看到该请求。如果您的存储库以其他名称(例如people),但是,然后请求/people转到 Spring Data REST 并请求/person由您的应用程序处理。spring-doc.cadn.net.cn