簡體   English   中英

EnableSpringDataWebSupport似乎與WebMvcConfigurerAdapter不兼容

[英]EnableSpringDataWebSupport doesn't seem to work well with WebMvcConfigurerAdapter

我在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]:指定的類是一個接口

我將不勝感激任何幫助或建議如何處理這個問題。 類似的問題沒有多大幫助:

因此,經過一些調查后,我找到了解決方案(也許,不理想的解決方案,但仍在工作 - 我仍然很高興看到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就像魅力一樣。

希望這個答案可以幫助那些面臨類似問題的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM