Estaba usando @EnableSpringDataWebSupport con éxito en mi aplicación Spring Boot para habilitar la paginación, la clasificación y otras cosas. Sin embargo, en algún momento, tuve que introducir un solucionador de argumentos personalizado y lo hice con la configuración de Java de la siguiente manera:
@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); } } Hizo que mi nuevo solucionador de argumentos funcionara, sin embargo, rompió por completo la paginación y otras funciones, que fueron configuradas automáticamente por @EnableSpringDataWebSupport . Intenté cambiar WebMvcConfigurerAdapter a alternativas como DelegatingWebMvcConfiguration o WebMvcConfigurationSupport , pero no tuve suerte, la paginación falla con la excepción:
No se pudo crear una instancia de [org.springframework.data.domain.Pageable]: la clase especificada es una interfaz
Agradecería cualquier ayuda o consejo sobre cómo manejar este problema. Preguntas similares no ayudaron mucho:
Entonces, después de investigar un poco, descubrí la solución (quizás, no sea la ideal, pero aún funciona; aún estaría feliz de ver la resolución "correcta" para el problema de los profesionales de Spring). Lo que cambié es cambiar de extends WebMvcConfigurerAdapter a extends HateoasAwareSpringDataWebConfiguration (ya que estamos usando HATEOAS). También actualicé los addArgumentResolvers anulados y ahora mi MvcConfig se ve así:
@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); } } El problema con Pageable desapareció y el RenamingProcessor personalizado funciona de maravilla.
Espero que esta respuesta ayude a alguien que enfrenta un problema similar.