解决 Spring Boot 中的 Ambiguous mapping 错误:方法映射冲突

在开发 Spring Boot 应用时,遇到 Ambiguous mapping 错误是一个常见的问题。这种错误通常发生在多个控制器方法映射到相同的 URL 路径时。Spring MVC 在启动时会根据 URL 路径将 HTTP 请求映射到对应的控制器方法,如果多个方法映射到同一个路径,Spring 就会抛出 IllegalStateException,提示映射冲突。

遇到的错误:

 

错误分析

从错误信息中可以看到,Spring Boot 在初始化时出现了 IllegalStateException,并且明确指出了问题:Ambiguous mapping。这意味着在你的项目中有两个方法映射到了相同的 URL 路径 {POST /pmPc/field},导致了冲突。具体是:

  • com.kakarote.pm.controller.PmPcController#queryReceivablesField(String)

  • com.kakarote.pm.controller.PmCheckController#queryReceivablesField(String)

两个方法的路径都是 /pmPc/field,而且都是使用 @PostMapping 注解标注的 POST 请求。

Spring MVC 会根据请求的 URL 路径和 HTTP 方法(如 GET、POST 等)来映射对应的控制器方法。如果多个方法映射到相同的 URL 路径并且使用相同的 HTTP 方法,Spring 就无法决定应该调用哪个方法,从而抛出 Ambiguous mapping 错误。

结果我查看发现这个地方的地址忘记修改了导致重复映射了,因此启动的时候才会爆这个错误

解决方案:

1. 修改 URL 路径

最直接的解决办法就是修改其中一个方法的 URL 路径,确保它们不会冲突。例如:

这是针对我自己的方法,其实要求都是一样的只要映射不同就可以了。

2. 检查是否有重复的映射

有时候我们会无意中为多个方法指定了相同的 URL 路径。检查一下你的代码,看看是否有类似的重复映射,确保每个 URL 路径都是唯一的。如果不需要为这两个方法提供相同的路径,只需调整其中一个的方法注解即可。

总结

Ambiguous mapping 错误的发生通常是因为多个方法映射到了相同的 URL 路径。在开发中,我们应该避免重复映射,确保每个 URL 路径映射到唯一的控制器方法。通过合理地调整方法的 URL 路径,可以轻松解决该问题。

希望本文能帮助你理解并解决 Ambiguous mapping 错误。如果你在开发过程中遇到类似问题,可以参考本文的解决方案进行排查和修复。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucky GGBond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值