对于最新的稳定版本,请使用 Spring Data REST 4.5.3! |
将 Spring Data REST 添加到现有的 Spring MVC 应用程序
如果您使用 Spring Boot,则不需要执行以下步骤。对于 Boot 应用程序,将spring-boot-starter-data-rest 自动将 Spring Data REST 添加到您的应用程序中。 |
您可以将 Spring Data REST 与现有的 Spring MVC 应用程序集成。在 Spring MVC 配置中(很可能是在您配置 MVC 资源的位置),添加对负责配置RepositoryRestController
. 类名是org.springframework.data.rest.webmvc.RepositoryRestMvcConfiguration
. 以下示例演示如何使用@Import
注释以添加正确的引用:
配置如下所示:
import org.springframework.context.annotation.Import;
import org.springframework.data.rest.webmvc.RepositoryRestMvcConfiguration;
@Configuration
@Import(RepositoryRestMvcConfiguration.class)
public class MyApplicationConfiguration {
…
}
<bean class="org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration"/>
当您的 ApplicationContext 遇到此 bean 定义时,它会引导必要的 Spring MVC 资源以完全配置控制器以导出它在其中找到的存储库ApplicationContext
以及任何父上下文。
有关所需配置的更多信息
Spring Data REST 依赖于几个 Spring MVC 资源,必须正确配置这些资源才能在现有的 Spring MVC 应用程序中工作。我们试图将这些资源与应用程序中已存在的任何类似资源隔离开来,但您可能希望通过修改这些 MVC 组件来自定义 Spring Data REST 的某些行为。
配置时应特别注意RepositoryRestHandlerMapping
,下一节将介绍。
RepositoryRestHandlerMapping
我们注册一个自定义HandlerMapping
实例,该实例仅响应RepositoryRestController
并且仅当路径由 Spring Data REST 处理时。为了将应用程序处理的路径与 Spring Data REST 处理的路径分开,此自定义HandlerMapping
class 检查 URL 路径并检查存储库是否已以该名称导出。如果有,则自定义HandlerMapping
class 允许请求由 Spring Data REST 处理。如果没有以该名称导出的 Repository,则返回null
,意思是“让其他HandlerMapping
实例尝试为此请求提供服务“。
The Spring Data RESTHandlerMapping
配置为order=(Ordered.LOWEST_PRECEDENCE - 100)
,这意味着在映射 URL 路径时,它通常是第一个。您现有的应用程序永远没有机会为存储库的请求提供服务。例如,如果您有一个以person
,则对应用程序的所有请求以/person
由 Spring Data REST 处理,并且您的应用程序永远不会看到该请求。如果您的存储库以不同的名称(例如people
),但是,然后请求/people
转到 Spring Data REST 并请求/person
由您的应用程序处理。