如何解决Spring swagger Ambiguous mapping?

时间:2018-04-20 07:07:19

标签: spring spring-boot swagger swagger-ui

在我的spring控制器类中,我有以下两种方法

@GetMapping(value = "/published_messages", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> handleEmptyQueryParam() throws Exception
    {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid Request , No Request Param received in the request");
    }

    @GetMapping(value = "/published_messages", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> getEdiDetailsByusername(@RequestParam(required=false, value="username") String username) throws Exception
    {
        List<String> userList = userService.getUserList(username);
        return isAValidResponse(userList);
    }

启动应用程序时,得到以下异常

Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'UserAppController' method 
public org.springframework.http.ResponseEntity<java.lang.String> com.rby.trans.controller.UserAppController.getEdiDetailsByusername(java.lang.String) throws java.lang.Exception
to {[/published_messages],methods=[GET],produces=[application/json]}: There is already 'UserAppController' bean method
public org.springframework.http.ResponseEntity<java.lang.String> com.tgt.trans.controller.UserAppController.handleEmptyQueryParam() throws java.lang.Exception mapped.
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:576)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:540)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:264)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:250)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:214)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:184)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:127)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)
    ... 50 common frames omitted

似乎是swagger的一个问题,我们在构建文件中具有以下依赖关系

compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.4.0'
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.4.0'

任何人都可以建议在这种情况下做什么,

无论是跟随什么,在休息控制器中做什么只是正确的,并且可以在春天做到这一点,那么为什么招摇错误呢?

Note : I got the answer , we need to use params attribute in the @GetMapping , it solved my issue .

Thanks to all .

1 个答案:

答案 0 :(得分:0)

前一段时间我在演示期间创建演示应用时遇到了类似的错误。发生此问题的原因是因为在我的一个端点映射(例如其他@GetMapping)中,我使用了&#39; name&#39;而不是&#39;价值&#39;属性所以问题可能出在你没有提供的代码部分。