此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data REST 4.4.0! |
将 Spring Data REST 添加到现有的 Spring MVC 应用程序
如果使用 Spring Boot,则不需要执行以下步骤。对于 Boot 应用程序,添加会自动将 Spring Data REST 添加到您的应用程序中。spring-boot-starter-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
我们注册一个自定义实例,该实例仅响应且仅当路径要由 Spring Data REST 处理时。为了将应用程序处理的路径与 Spring Data REST 处理的路径分开,此自定义类检查 URL 路径并检查是否已以该名称导出存储库。如果有,则自定义类允许 Spring Data REST 处理请求。如果没有在该名称下导出的 Repository,它将返回 ,这意味着“让其他实例尝试为此请求提供服务”。HandlerMapping
RepositoryRestController
HandlerMapping
HandlerMapping
null
HandlerMapping
Spring Data REST 配置了 ,这意味着在需要映射 URL 路径时,它通常是最先的。您的现有应用程序永远没有机会为用于存储库的请求提供服务。例如,如果您有一个名为 的存储库,则对应用程序的所有以 开头的请求都由 Spring Data REST 处理,并且您的应用程序永远不会看到该请求。但是,如果您的存储库以其他名称(例如 )导出,则转到 Spring Data REST 的请求和请求的请求将由您的应用程序处理。HandlerMapping
order=(Ordered.LOWEST_PRECEDENCE - 100)
person
/person
people
/people
/person