gpt4 book ai didi

java - EnableSpringDataWebSupport 似乎不适用于 WebMvcConfigurerAdapter

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:43 26 4
gpt4 key购买 nike

我在我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com