【问题标题】:EnableSpringDataWebSupport doesn't seem to work well with WebMvcConfigurerAdapterEnableSpringDataWebSupport 似乎不适用于 WebMvcConfigurerAdapter
【发布时间】:2017-08-01 01:08:54
【问题描述】:

我在我的 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 之类的替代方案,但没有运气——分页失败,但例外:

无法实例化 [org.springframework.data.domain.Pageable]: 指定的类是一个接口

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

【问题讨论】:

  • 你不应该需要@EnableSpringDataWebSupport,因为当找到这些类时,Spring Boot 已经处理好了。
  • @m-deinum 感谢您的快速回复。我从配置类中删除了@EnableSpringDataWebSupport,但结果是一样的——分页不起作用

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


【解决方案1】:

所以,经过一番调查,我找到了解决方案(也许不是理想的解决方案,但仍然有效——我仍然很高兴看到 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 就像一个魅力。

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

【讨论】:

    猜你喜欢
    • 2020-04-04
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多