[英]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
切換到DelegatingWebMvcConfiguration
或WebMvcConfigurationSupport
類的替代品,但沒有運氣 - 分頁失敗,例外情況如下:
無法實例化[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.