requestmapping - SpringBoot @RestController, se encontrĂ³ un mapeo ambiguo
spring controller example @requestmapping (2)
Hola, tengo un RestController simple en mi muestra:
@RestController
public class PersonController {
@RequestMapping(name = "/getName", method = GET)
public String getName() {
return "MyName";
}
@RequestMapping(name = "/getNumber", method = GET)
public Double getNumber(){
return new Double(0.0);
}
}
Y tengo SampleController para iniciar SpringBoot:
@SpringBootApplication
@Controller
public class SampleController {
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
Cuando intento ejecutar SampleCotroller ocurre la siguiente excepción:
Caused by: java.lang.IllegalStateException: Ambiguous mapping found. Cannot map ''personController'' bean method
public java.lang.Double com.web.communication.PersonController.getNumber()
to {[],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already ''personController'' bean method
public java.lang.String com.web.communication.PersonController.getName() mapped.
Donde el problema puede ser? No puede haber más RequestMappings en un RestController?
Muchas gracias por la respuesta
Debe usar el atributo de value
para definir la asignación. Usó el name
este momento, que solo proporciona un nombre para la asignación, pero no define ningún tipo de mapeo. Por lo tanto, actualmente, ambos métodos no están asignados (en cuyo caso, ambos se asignan a la misma ruta). Cambiar los métodos a:
@RequestMapping(value = "/getName", method = GET)
public String getName() {
return "MyName";
}
@RequestMapping(value = "/getNumber", method = GET)
public Double getNumber(){
return new Double(0.0);
}
O puedes usar,
@GetMapping("/getName")
Es el mismo uso de método con valor, es una nueva versión del método de especificación = "POST" con el valor de asignación de solicitud.