解决 Spring Boot 中 `Ambiguous mapping. Cannot map ‘xxxController‘ method` 错误
前言
在使用 Spring Boot 开发 Web 应用时,经常会遇到各种各样的错误。其中一种常见的错误是 Ambiguous mapping. Cannot map ‘testController‘ method。本文将详细介绍这个错误的原因及解决方法,帮助开发者快速定位并解决问题。
错误解释
这个错误表示在 Spring Boot 应用中存在两个或多个相同的映射,导致无法确定应当由哪一个控制器(Controller)处理特定的 HTTP 请求。具体来说,这通常是因为您的应用中有两个或多个使用 @RequestMapping 或其变体(如 @GetMapping、@PostMapping 等)注解的方法,它们的路径相同或容易混淆。
错误示例
假设您有以下两个方法:
@RestController
@RequestMapping("/api")
public class TestController {@GetMapping("/save")public String save() {return "Saved";}@PostMapping("/save")public String changeSave(@RequestBody String data) {return "Changed and Saved: " + data;}
}
在这个例子中,两个方法的路径都是 /api/save,但是请求方法不同(一个是 GET,另一个是 POST)。这是允许的,因为请求方法不同,Spring 可以正确区分这两个方法。
然而,如果您有以下两个方法:
@RestController
@RequestMapping("/api")
public class TestController {@PostMapping("/save")public String save() {return "Saved";}@PostMapping("/save")public String changeSave(@RequestBody String data) {return "Changed and Saved: " + data;}
}
在这个例子中,两个方法的路径和请求方法都相同,因此会导致 Ambiguous mapping 错误。
解决方法
-
检查所有
@RequestMapping和相关注解- 确保没有两个或多个路径相同的映射。检查您的 Controller 类中的所有
@RequestMapping、@GetMapping、@PostMapping等注解,确保它们的路径是唯一的。 - 如果确实有意图使用相同路径的情况,确保每个方法都有足够的区分性,比如通过 HTTP 请求方法(GET, POST 等)或参数来区分。
- 确保没有两个或多个路径相同的映射。检查您的 Controller 类中的所有
-
避免类级别和方法级别的路径冲突
- 如果您在类级别使用了
@RequestMapping,确保方法级别的@RequestMapping不会与之冲突。 - 例如,如果类级别使用了
@RequestMapping("/api"),那么方法级别的映射应该是/api/someMethod而不是简单的/someMethod。
- 如果您在类级别使用了
-
处理路径变量或参数导致的冲突
- 如果冲突是由路径变量或参数引起的,考虑使用更具体的路径或参数配置。例如,使用
{id}路径变量时,确保每个方法的路径变量名称是唯一的。
- 如果冲突是由路径变量或参数引起的,考虑使用更具体的路径或参数配置。例如,使用
-
检查 Spring 配置或组件扫描路径
- 确保没有重复的 Spring 配置或组件扫描路径导致同一个控制器被多次加载。
示例
假设您有以下两个方法:
@RestController
@RequestMapping("/api")
public class TestController {@GetMapping("/save")public String save() {return "Saved";}@PostMapping("/save")public String changeSave(@RequestBody String data) {return "Changed and Saved: " + data;}
}
在这个例子中,两个方法的路径都是 /api/save,但是请求方法不同(一个是 GET,另一个是 POST)。这是允许的,因为请求方法不同,Spring 可以正确区分这两个方法。
总结
解决 Ambiguous mapping 错误的关键在于确保每个方法的路径映射是唯一的,或者通过请求方法和参数来区分不同的方法。
相关文章:
解决 Spring Boot 中 `Ambiguous mapping. Cannot map ‘xxxController‘ method` 错误
前言 在使用 Spring Boot 开发 Web 应用时,经常会遇到各种各样的错误。其中一种常见的错误是 Ambiguous mapping. Cannot map ‘testController‘ method。本文将详细介绍这个错误的原因及解决方法,帮助开发者快速定位并解决问题。 错误解释 这个错误…...
C++ 函数返回值优化
本文中部分内容来自下面的文章,还有一部分来自智谱清言 C 返回值优化_c 局部变量返回优化-CSDN博客 elision:省略 copy elision:拷贝省略 RVO (Return Value Optimization):返回值优化 ------ 我最近也遇到了上面博文中说到的问题&…...
c++源码阅读__ThreadPool__正文阅读
一. 简介 本章我们开始阅读c git 高星开源项目ThreadPool, 这是一个纯c的线程池项目, 并且代码量极小, 非常适合新手阅读 git地址: progschj / ThreadPool 二. 前提知识 为了面对不同读者对c掌握情况不同的情况, 这里我会将基本上稍微值得一说的前提知识点, 全部专门写成一篇…...
关于ES的查询
查询结果那么多字段都是什么? 为什么会提到这个问题呢,因为默认ES查询的结果会有很多信息,我们可能并不希望要那么多数据,所以你需要了解这些字段都表示什么,并正确的返回和使用它们。 took– Elasticsearch 运行查询…...
数据结构初识
目录 1.初识 2.时间复杂度 常见时间复杂度举例: 3.空间复杂度 4.包装类&简单认识泛型 4.1装箱和拆箱 5.泛型 6.泛型的上界 7.泛型方法 8.List接口 1.初识 1.多画图 2.多思考 3.多写代码 4.多做题 牛客网-题库/在线编程/剑指offer 算法篇:…...
保存数据到Oracle时报错ORA-17004: 列类型无效: 1111
1、问题描述: 关键信息:Mybatis;Oracle (1)保存信息到Oracle时报错: Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #10 with JdbcType OTHER . Try setting a dif…...
Excel——宏教程(1)
Microsoft excel是一款功能非常强大的电子表格软件。它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。…...
论文浅尝 | MindMap:知识图谱提示激发大型语言模型中的思维图(ACL2024)
笔记整理:和东顺,天津大学硕士,研究方向为软件缺陷分析 论文链接:https://aclanthology.org/2024.acl-long.558/ 发表会议:ACL 2024 1. 动机 虽然大语言模型(LLMs)已经在自然语言理解和生成任务…...
第6章:TDengine 标签索引和删除数据
TDengine 标签索引和删除数据 目标 掌握标签索引的创建、删除掌握超表、子表创建以及数据删除删除数据 删除数据是 TDengine 提供的根据指定时间段删除指定表或超级表中数据记录的功能,方便用户清理由于设备故障等原因产生的异常数据。 注意:删除数据并不会立即释放该表所…...
【微软:多模态基础模型】(5)多模态大模型:通过LLM训练
欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【微软:多模态基础模型】(1)从专家到通用助手 【微软:多模态基础模型】(2)视觉理解 【微…...
海外带云仓多语言商城源码,多语言多商家云仓一键代发商城
新增海外仓,云仓国际供应链系统,商家可登陆云仓进行批量发货 商城修复了一些bug以及增加了订单数字提示,优化加载速度,二开了一些细微功能 基于 PHP Laravel 框架开发的一款 Web 商城系统。 1.前端多国语言自由切换,…...
android:taskAffinity 对Activity退出时跳转的影响
android:taskAffinity 对Activity跳转的影响 概述taskAffinity 的工作机制taskAffinity对 Activity 跳转的影响一个实际的开发问题总结参考 概述 在 Android 开发中,任务栈(Task)是一个核心概念。它决定了应用程序的 Activity 如何相互交互以…...
Apache Dolphinscheduler数据质量源码分析
Apache DolphinScheduler 是一个分布式、易扩展的可视化数据工作流任务调度系统,广泛应用于数据调度和处理领域。 在大规模数据工程项目中,数据质量的管理至关重要,而 DolphinScheduler 也提供了数据质量检查的计算能力。本文将对 Apache Do…...
solana链上智能合约开发案例一则
环境搭建 安装Solana CLI:Solana CLI是开发Solana应用的基础工具。你可以通过官方文档提供的安装步骤,在本地环境中安装适合你操作系统的Solana CLI版本。安装完成后,使用命令行工具进行配置,例如设置网络环境(如开发网…...
使用 PyTorch 实现 ZFNet 进行 MNIST 图像分类
在本篇博客中,我们将通过两个主要部分来演示如何使用 PyTorch 实现 ZFNet,并在 MNIST 数据集上进行训练和测试。ZFNet(ZFNet)是基于卷积神经网络(CNN)的图像分类模型,广泛用于图像识别任务。 环…...
车轮上的科技:Spring Boot汽车新闻集散地
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理汽车资讯网站的相关信息成为必然。开发合适…...
IDEA2023 SpringBoot整合Web开发(二)
一、SpringBoot介绍 由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot提供了一种新的编程范式,可以更加快速便捷…...
国产三维CAD 2025新动向:推进MBD模式,联通企业设计-制造数据
本文为CAD芯智库原创整理,未经允许请勿复制、转载! 上一篇文章阿芯分享了影响企业数字化转型的「MBD」是什么、对企业优化产品设计流程有何价值——这也是国产三维CAD软件中望3D 2024发布会上,胡其登先生(中望软件产品规划与GTM中…...
ubuntu 之 安装mysql8
安装 # 如果 ubuntu 版本 > 20.04 则不用执行 wget 这步 wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.debsudo apt-get updatesudo apt-get install mysql-server mysql-client 安装过程中如果没有提示输入密码 sudo cat /etc/mysql/debian.cnf # 查…...
Flink Lookup Join(维表 Join)
Lookup Join 定义(支持 Batch\Streaming) Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维…...
STM32+原理图+PCB程序直流充电桩主控方案源
💥💥💞💞欢迎来到本博客❤️❤️💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭:行百…...
AI科技热点日报 | 2026年5月12日
文章目录AI科技热点日报 | 2026年5月12日一、 行业标准与规范:AI终端迈入“标准化”时代二、 智能体(Agent)与具身智能:从云端走向实战三、 算力与基础设施:产业链的深度重构四、 产业融合与应用探索:AI fo…...
IO:为专业开发者打造的AI编程助手架构解析与实战指南
1. 项目概述:IO,一个为专业开发者打造的AI编程助手如果你和我一样,每天大部分时间都在和代码、终端、以及各种开发工具打交道,那你一定理解那种对“流畅感”的渴望。我们需要的不是一个只会回答问题的聊天机器人,而是一…...
Cache映射策略全解析:从全相联到组相连,如何平衡灵活性与效率?
1. 为什么需要Cache映射策略? 想象一下你正在图书馆找一本书。如果每次都要从最外层的书架开始一本本翻找,效率肯定低得令人发指。这时候我们会给书籍分类编号——这就是Cache映射策略的日常类比。 在计算机体系结构中,CPU的运行速度远远快于…...
Hermes Agent 可视化监控与文档生成工具 hermes-dashboard 详解
1. 项目概述与核心价值如果你正在使用 Hermes Agent 进行 AI 智能体开发,或者对 Agent 的内部运行状态感到好奇,那么你很可能需要一个“上帝视角”。hermes-dashboard正是这样一个工具,它为你提供了一个实时的监控仪表盘和一个自动生成的、可…...
别再只会点F2了!Trace32调试实战:从连接脚本到高效单步的保姆级避坑指南
别再只会点F2了!Trace32调试实战:从连接脚本到高效单步的保姆级避坑指南 当你面对一块新板卡,调试器连接时断时续,代码加载后莫名其妙跑飞,单步执行时总在循环里打转——这时候才明白,Trace32的F2键只是调试…...
Modbus RTU 与 Modbus TCP 深入指南-附录:快速参考表
十五、附录:快速参考表 15.1 Modbus RTU 帧示例速查 操作请求帧(十六进制)响应帧示例读线圈(1个)01 01 00 00 00 01 CRC01 01 01 01 CRC读离散输入01 02 00 00 00 01 CRC01 02 01 00 CRC读保持寄存器(1个…...
Foundation Sites响应式设计原理:5个核心断点系统详解,打造完美移动优先体验
Foundation Sites响应式设计原理:5个核心断点系统详解,打造完美移动优先体验 【免费下载链接】foundation-sites The most advanced responsive front-end framework in the world. Quickly create prototypes and production code for sites that work …...
Azure OpenAI代理:无缝迁移OpenAI应用到Azure云服务
1. 项目概述如果你正在使用或开发基于OpenAI官方API的应用,比如各种ChatGPT Web UI、LangChain应用,但同时又想利用微软Azure OpenAI Service在合规性、稳定性、网络延迟或成本控制上的优势,那么你大概率会遇到一个头疼的问题:这两…...
从FPGA工程师的视角看AMBA总线:手把手教你用Verilog实现一个简易APB外设
从FPGA工程师的视角看AMBA总线:手把手教你用Verilog实现一个简易APB外设 在FPGA和数字IC设计领域,AMBA总线协议就像城市中的交通网络,负责协调各个功能模块之间的数据流动。而APB(Advanced Peripheral Bus)作为AMBA家族…...
