对于最新的稳定版本,请使用 Spring Data REST 4.4.0! |
将 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
annotation 添加适当的引用:
配置将如下所示:
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
并且仅当 path 要由 Spring Data REST 处理时。为了将应用程序处理的路径与 Spring Data REST 处理的路径分开,此自定义HandlerMapping
类检查 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
由您的应用程序处理。