Spring MVC REST接口出现Ambiguous mapping异常求助
解决Spring MVC REST的Ambiguous Mapping异常
嘿,这个java.lang.IllegalStateException: Ambiguous mapping异常我太熟悉了,本质就是Spring找不到唯一的控制器方法来匹配请求。从你贴的代码片段来看,问题出在@PostMapping的用法上——你只设置了name属性,却没给它指定具体的请求路径!
问题根源
@PostMapping的name属性只是给这个映射起个标识名字,根本不会用来匹配请求路径。加上你的类上已经有@RequestMapping("/relationship"),如果这个控制器里还有其他没指定路径的@PostMapping方法,或者项目里别的控制器也有映射到/relationship的POST请求,Spring就会觉得这些方法的映射完全重复,直接抛出歧义异常。
快速修复方案
给@PostMapping补上value或者path属性,明确唯一的请求路径就行,比如:
@RestController @RequestMapping("/relationship") public class RelationshipEndpoint { private static final Logger LOG = LoggerFactory.getLogger(RelationshipEndpoint.class); @Autowired private IRelationshipService relationshipService; // 这里加上value属性,指定具体路径 @PostMapping(value = ResourcePathConstants.RELATIONSHIP_LIST) // 注意:@RestController已经包含@ResponseBody,这个注解可以省掉 public ResponseEntity<?> getRelationshipList(...) { // 你的业务逻辑代码 } }
额外检查点
- 排查整个项目,确保没有其他控制器方法和这个方法的请求路径+请求方法组合完全一致
- 如果你是继承了某个父类控制器,也要检查父类里有没有重复的映射定义
内容的提问来源于stack exchange,提问作者Raghuveer
相关产品推荐
相关产品推荐

