java - EnableSpringDataWebSupport 似乎不适用于 WebMvcConfigurerAdapter

标签 java spring spring-mvc spring-boot spring-data

我在我的 Spring Boot 应用程序中成功地使用了 @EnableSpringDataWebSupport 来启用分页、排序等等。然而,在某些时候,我不得不引入一个自定义参数解析器,并使用 Java 配置来实现,如下所示:

@Configuration 
@EnableSpringDataWebSupport 
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(renamingProcessor());
    }

    @Bean
    protected RenamingProcessor renamingProcessor() {
        return new RenamingProcessor(true);
    } 
}

它使我的新参数解析器工作,但完全破坏了由 @EnableSpringDataWebSupport 自动配置的分页和其他功能。我已经尝试将 WebMvcConfigurerAdapter 切换为 DelegatingWebMvcConfigurationWebMvcConfigurationSupport 等替代方案,但没有成功——分页失败,但出现以下异常:

Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface

对于如何处理此问题的任何帮助或建议,我将不胜感激。类似的问题没有太大帮助:

最佳答案

因此,经过一些调查后,我找到了解决方案(也许不是理想的解决方案,但仍然有效——我仍然很高兴看到 Spring 专业人士对问题的“正确”解决方案)。我所做的更改是从 extends WebMvcConfigurerAdapter 切换到 extends HateoasAwareSpringDataWebConfiguration(因为我们使用的是 HATEOAS)。我还更新了覆盖的 addArgumentResolvers,现在我的 MvcConfig 看起来像这样:

@Configuration
public class MvcConfig extends HateoasAwareSpringDataWebConfiguration {

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        super.addArgumentResolvers(argumentResolvers);
        argumentResolvers.add(renamingProcessor());
    }

    @Bean
    protected RenamingProcessor renamingProcessor() {
        return new RenamingProcessor(true);
    }
}

Pageable 的问题消失了,自定义 RenamingProcessor 的效果非常好。

希望这个答案能帮助遇到类似问题的人。

关于java - EnableSpringDataWebSupport 似乎不适用于 WebMvcConfigurerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722613/

相关文章:

java - Java中,空的HashMap空间分配

java - 为什么 ObjectOutputStream 和 ObjectInputStream 抛出 EOFException 的这种奇怪行为?

java - Spring Data Rest 是否支持 Spring Data 的表达式运算符,例如。之间,大于?

java - Spring Boot 不允许对静态资源进行 POST 请求

java - 为什么 JFrame 是透明的?

java - 分离Mysql的读写,无需修改Web服务器的配置

spring - Grails对于transaction = false的默认传播是什么?

Spring数据@Transactional不回滚

java - 我可以在 View 层中找到 spring mvc Controller 的 URL 吗?

java - 尝试在 Spring WebFlow 项目的服务级别上运行 junit 测试。假设$AssumptionViolatedException