Ambiguous mapping found
是 Spring Boot/MVC 应用中常见的控制器映射冲突错误,通常由多个控制器或方法定义了相同或冲突的请求路径引发。以下是具体原因及解决方案:
原因分析
-
同一控制器内的方法路径重复
同一类中多个方法使用相同的@RequestMapping
、@GetMapping
等注解路径,或类路径与子路径组合后重复。 -
跨控制器的路径冲突
不同控制器类中定义了完全相同的请求路径,导致 Spring 无法区分请求的归属。 -
默认方法或未明确的映射条件
多个方法未通过 HTTP 方法(GET/POST 等)、请求参数或头部信息明确区分,导致歧义
解决方案
1. 检查重复路径
-
同一控制器内:确保所有方法级别的
@RequestMapping
路径唯一,避免类路径与子路径组合后重复。例如:@RestController @RequestMapping("/api") // 类路径 public class UserController { @GetMapping("/users") // 完整路径为 /api/users public String getUsers() { /* ... */ } @PostMapping("/users") // 通过 HTTP 方法区分 public String createUser() { /* ... */ } }
-
跨控制器