There is already ‘consumerController‘ bean method

一、问题描述

在控制台中找到异常 Caused by可以看到:There is already 'consumerController2' bean method

Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'userController' method 
public java.util.List com.yh.controller.UserController.findList()
to { /findList}: There is already 'consumerController2' bean method
public java.lang.String com.yh.controller.ConsumerController2.findList() mapped.
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:618) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:586) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:312) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lambda$detectHandlerMethods$1(AbstractHandlerMethodMapping.java:282) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
 

二、分析原因

在Sring框架中,controler是MVC模式中的控制器,用于处理来自前端的HTTP请求,并将响应返回给前端。在Spring中,我们可以使用注解来定义controller类和方法。但是,在开发过程中,有时可能会遇到“there is already customercontroller bean method”的错误。本文将详细介绍这个问题,并提供解决方案。
首先,让我们了解一下这个错误的原因。当我们在Spring项目中定义了两个或多个方法,这些方法都有相同的名称和参数,同时使用了@Controller或RestController注解时,就会出现这个错误。这是因为Spring无法确定哪个方法应该被视为控制器方法。

三、解决方案

 
那么,如何解决这个问题呢?解决方案很简单:我们只需要在@Controller或@RestController注解中为每个方法指定一个唯一的名称即可。例如: 

在ConsumerController1 这个controller类中叫做@RequestMapping("findList");

在ConsumerController2 这个controller类中叫做@RequestMapping("findUserList");

@RestController
public class ConsumerController1 {
    @Reference
    private ServiceUserService serviceUserService;

    @RequestMapping("findList")
    public String findList() {
        return serviceUserService.findList().toString();
    }
    
}
@RestController
public class ConsumerController2 {
    @Reference
    private ServiceUserService serviceUserService;

    @RequestMapping("findUserList")
    public String findList() {
        return serviceUserService.findList().toString();
    }

}

你可能感兴趣的:(异常,java,dubbo)