Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

599
Vistas
El controlador Spring Data REST no debe usar @RequestMapping en el nivel de clase, ya que esto provocaría un registro doble con Spring MVC

La actualización de Spring Boot 2.5.5 a 2.5.6 provocó errores de este tipo en las pruebas de mi controlador:

El controlador Spring Data REST WidgetController$$EnhancerBySpringCGLIB$$9dfdd90c_3 no debe usar @RequestMapping en el nivel de clase, ya que esto provocaría un registro doble con Spring MVC.

 Caused by: java.lang.IllegalStateException: Spring Data REST controller WidgetController$$EnhancerBySpringCGLIB$$9dfdd90c_3 must not use @RequestMapping on class level as this would cause double registration with Spring MVC! at org.springframework.data.rest.webmvc.BasePathAwareHandlerMapping.isHandler(BasePathAwareHandlerMapping.java:165) ~[spring-data-rest-webmvc-3.5.6.jar:3.5.6] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.processCandidateBean(AbstractHandlerMethodMapping.java:265) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:225) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:213) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:206) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration.restHandlerMapping(RepositoryRestMvcConfiguration.java:690) ~[spring-data-rest-webmvc-3.5.6.jar:3.5.6] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.12.jar:5.3.12] ... 88 common frames omitted

Los controladores siguen este patrón:

 @RepositoryRestController @RequestMapping("/api/widgets") @RequiredArgsConstructor public class WidgetController { private final @NotNull WidgetHandler widgetHandler; @GetMapping public ResponseEntity<List<Widget>> widgets() { return ResponseEntity.ok().body(widgetHandler./*...*/); } // ... }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

A partir de stacktrace, la excepción la lanza el método isHandler de la clase BasePathAwareHandlerMapping.

2.5.5

 protected boolean isHandler(Class<?> beanType) { Class<?> type = ProxyUtils.getUserClass(beanType); return type.isAnnotationPresent(BasePathAwareController.class); }

2.5.6

 protected boolean isHandler(Class<?> beanType) { ... if (AnnotatedElementUtils.hasAnnotation(type, RequestMapping.class)) { throw new IllegalStateException(String.format(AT_REQUEST_MAPPING_ON_TYPE, beanType.getName())); } ... }

Si necesita las funcionalidades de Spring Data Rest y quiere usar @RepositoryRestController, puede usar @RequestMapping (o @GetMapping, @PostMapping, ...) a nivel de método con la ruta completa.

 @RepositoryRestController @RequiredArgsConstructor public class WidgetController { private final @NotNull WidgetHandler widgetHandler; @GetMapping("/api/widgets") public ResponseEntity<List<Widget>> widgets() { return ResponseEntity.ok().body(widgetHandler./*...*/); } // ...

}

over 4 years ago · Santiago Trujillo Denunciar

0

Cambie @RepositoryRestController a @RestController :

 @RestController @RequestMapping("/api/widgets") @RequiredArgsConstructor public class WidgetController { private final @NotNull WidgetHandler widgetHandler; @GetMapping public ResponseEntity<List<Widget>> widgets() { return ResponseEntity.ok().body(widgetHandler./*...*/); } // ... }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda