Spring 具有 Spring MVC 的数据 REST:将 RepositoryRestMvcConfiguration 添加到现有的 DispatcherServlet

Spring Data REST with Spring MVC: Adding RepositoryRestMvcConfiguration to existing DispatcherServlet

我有一个现有的 Spring MVC 应用程序,带有 DispatcherServlet 和基于 XML 的配置。

现在我想集成 Spring Data REST,但我不知道如何以干净的方式执行此操作。我添加了

<context:component-scan>...</context:component-scan>

因此找到了我的 RestController,但我未能添加 RepositoryRestMvcConfiguration 配置。我尝试了注释驱动的方法,但它不起作用

@Configuration
public class RestConfiguration extends RepositoryRestMvcConfiguration {
...
}

<bean class="com.mypackage.rest.RestConfiguration" />

该方法也不起作用。

我也在web.xml

中尝试了以下方法
<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
    </init-param>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>com.mypackage.rest.RestConfiguration</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

奇怪的是,调用了一个用@PostConstruct 注释的方法,而不是 configure* 方法。

docs for Spring Data REST 中有一章解释了如何在代码中将 Spring Data REST 添加到 Spring MVC 应用程序。它还说

The equivalent of the above in a standard web.xml will also work identically to this configuration if you are still in a servlet 2.5 environment.

你是怎么做到的?

幸好在Section 11.2中有说明。如果在第 2.5 节中有一个指向第 11.2 节的参考就好了:-/

In Java, this would look like:

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

@Configuration
@Import(RepositoryRestMvConfiguration.class)
public class MyApplicationConfiguration {
  …
}

In XML this would look like:

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