|
此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Data REST 5.0.4! |
将 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 的 Java 配置类的 bean 引用。该类的名称是 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 类会检查 URL 路径,并判断是否有 Repository 以该名称被导出。如果有,则该自定义 HandlerMapping 类会将请求交由 Spring Data REST 处理;如果没有 Repository 以该名称被导出,它将返回 null,表示“让其他 HandlerMapping 实例尝试处理此请求”。
Spring Data REST 的 HandlerMapping 配置了 order=(Ordered.LOWEST_PRECEDENCE - 100),这意味着在进行 URL 路径映射时,它通常排在最前面。因此,原本由您的应用程序处理的、本应发往仓库的请求将没有机会被您的应用程序接收到。例如,如果您有一个名为 person 的仓库被导出,那么所有以 /person 开头的请求都会由 Spring Data REST 处理,而您的应用程序永远不会看到这些请求。然而,如果您的仓库以其他名称(例如 people)导出,那么对 /people 的请求将由 Spring Data REST 处理,而对 /person 的请求则由您的应用程序处理。