(已解决)IllegalStateException: Ambiguous mapping. Cannot map ‘xxxController‘ method

我会带着你远行 2022-10-30 15:26 115阅读 0赞

问题现象:

今天在敲代码的时候,启动项目时,遇到这个报错:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU4NTM4Ng_size_16_color_FFFFFF_t_70


问题分析:

通过报错信息可知:是因为这个 xxxController 中,有个 getUserInfo 方法,这个方法是 GET 请求接口,且在 BaseController 中,已经存在了 getUserInfo 这个同名方法。

乍一看代码没有什么问题,name是为什么会出现这个情况呢?

我仔细检查了一下,在 看到 报错信息中的 {GET /xxx/getUserInfo} 后,总算发现问题所在:

xxxReaderController 和 xxxWriterController ,它们都继承了 BaseController

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU4NTM4Ng_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU4NTM4Ng_size_16_color_FFFFFF_t_70 2

然后再看 BaseController

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU4NTM4Ng_size_16_color_FFFFFF_t_70 3

可以发现在 BaseController 中 有一个 getUserInfoGET请求接口,问题就在这:

xxxReaderControllerxxxWriterController 继承了 BaseController 之后,就默认(继承)生成了一个同名的 GET请求接口 getUserInfo,而由于这 两个控制层 映射路径 是一样的,都是 devcardtemplate ,于是就会导致在 同一个映射路径 下,有两个 同名且同请求方式的接口,造成冲突。


解决方法:

1、去掉 BaseControllergetUserInfo 接口GetMapping 注解,并在需要使用到该接口的控制层中,定义 getUserInfo方法 并加上 GetMapping 注解;

2、直接删除 BaseControllergetUserInfo 接口,并在需要使用到该接口的控制层中,定义 getUserInfo接口;

3、修改两个控制层的 映射路径 为不同名(强烈建议)。

发表评论

表情:
评论列表 (有 0 条评论,115人围观)

还没有评论,来说两句吧...

相关阅读