Spring mvc Ambiguous mapping found. Cannot map controller bean method

本文介绍了一个关于Spring MVC框架中@RequestMapping注解使用的小技巧。通过对比不同的属性名称(name与value),帮助开发者更好地理解和应用这一关键注解。
@RequestMapping(name = "xxx.htm", method = RequestMethod.GET)

TO

@RequestMapping(value = "xxx.htm", method = RequestMethod.GET)
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-07-22T11:44:29.283+08:00 ERROR 45184 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Ambiguous mapping. Cannot map 'fileController' method com.atguigu.daijia.driver.controller.FileController#upload(MultipartFile) to {POST [/file/upload]}: There is already 'fileController' bean method com.atguigu.daijia.driver.controller.FileController#upload(MultipartFile, String) mapped. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) ~[spring-context-6.0.7.jar:6.0.7] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[spring-context-6.0.7.jar:6.0.7] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.5.jar:3.0.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.5.jar:3.0.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.5.jar:3.0.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.5.jar:3.0.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[spring-boot-3.0.5.jar:3.0.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[spring-boot-3.0.5.jar:3.0.5] at com.atguigu.daijia.WebDriverApplication.main(WebDriverApplication.java:15) ~[classes/:na] Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'fileController' method com.atguigu.daijia.driver.controller.FileController#upload(MultipartFile) to {POST [/file/upload]}: There is already 'fileController' bean method com.atguigu.daijia.driver.controller.FileController#upload(MultipartFile, String) mapped. at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.validateMethodMapping(AbstractHandlerMethodMapping.java:667) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:633) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:331) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.registerHandlerMethod(RequestMappingHandlerMapping.java:438) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.registerHandlerMethod(RequestMappingHandlerMapping.java:76) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lambda$detectHandlerMethods$2(AbstractHandlerMethodMapping.java:298) ~[spring-webmvc-6.0.7.jar:6.0.7] at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) ~[na:na] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:296) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.processCandidateBean(AbstractHandlerMethodMapping.java:265) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:224) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:212) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:225) ~[spring-webmvc-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[spring-beans-6.0.7.jar:6.0.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[spring-beans-6.0.7.jar:6.0.7] ... 16 common frames omitted 2025-07-22T11:44:29.504+08:00 WARN 45184 --- [ Thread-7] c.a.nacos.common.notify.NotifyCenter : [NotifyCenter] Start destroying Publisher 2025-07-22T11:44:29.504+08:00 WARN 45184 --- [ Thread-7] c.a.nacos.common.notify.NotifyCenter : [NotifyCenter] Destruction of the end 2025-07-22T11:44:29.504+08:00 WARN 45184 --- [ Thread-1] c.a.n.common.http.HttpClientBeanHolder : [HttpClientBeanHolder] Start destroying common HttpClient 2025-07-22T11:44:29.506+08:00 WARN 45184 --- [ Thread-1] c.a.n.common.http.HttpClientBeanHolder : [HttpClientBeanHolder] Destruction of the end 进程已结束,退出代码1
07-23
`java.lang.IllegalStateException: Ambiguous mapping found. Cannot map` 这个异常通常是由于 Spring MVC 中存在模糊的请求映射所导致的,即多个控制器方法或处理器映射到了相同的 URL 路径。解决此问题可以从以下几个方面入手: ### 检查映射路径 要保证 `systemInfoController` 中的所有方法使用的映射路径是唯一的,避免和其他控制器中的方法映射到相同的路径。例如,在 Spring MVC 中使用 `@RequestMapping` 或 `@GetMapping`、`@PostMapping` 等注解时,需确保路径唯一。 ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class SystemInfoController { @GetMapping("/system/info") public String getSystemInfo() { return "System information"; } // 确保其他方法的映射路径不重复 @GetMapping("/system/status") public String getSystemStatus() { return "System status"; } } ``` ### 检查控制器配置 查看配置文件或者注解中是否存在重复的配置,确保没有意外地将同一个控制器方法映射到多个路径。 ### 检查命名空间和上下文 如果使用了多个 Spring 上下文或者命名空间,要确保它们之间没有冲突。有时候,不同的上下文可能会导致相同的映射路径被重复定义。 ### 调试和日志 在开发环境中,可以开启 Spring 的调试日志,以便更详细地查看映射信息。在 `application.properties` 或者 `application.yml` 中添加以下配置: ```properties logging.level.org.springframework.web=DEBUG ``` 通过调试日志,可以查看具体的映射信息,找出重复的映射路径。 ### 版本兼容性 确保使用的 Spring 框架版本和其他依赖库的版本是兼容的,有时候版本不兼容也可能导致映射冲突。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值