[英]Spring Boot RestController inheritance and ambiguous mapping issue
[英]Spring MVC RestController Ambiguous PathVariable mapping
我有 2 个GET处理程序方法
@RestController
public class TestController {
...
@GetMapping(name = "/test")
public Test testMethod() {
return testService.getTest();
}
@GetMapping(name = "/test/{count}")
public List<Test> getTestList2(@PathVariable(name = "count") Integer count) {
return testService.getTestList(count);
}
}
我得到错误:
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'testController' method
public java.util.List<models.Test> TestController.getTestList2(java.lang.Integer)
to {[],methods=[GET]}: There is already 'testController' bean method
如果我评论一种方法一切正常
你在做的错误是你告诉@GetMapping
名称而不是它的值,它可能觉得它们的工作方式相同,但它们有微小的差异。
RequestMapping.name :为此映射分配一个名称。
和
RequestMapping.value :这个注解表达的主要映射。 在类型级别和方法级别都支持! 当在类型级别使用时,所有方法级别的映射都会继承这个主要映射,将它缩小到特定的处理程序方法。
@RestController
public class TestController {
@GetMapping(value = "/test")
public String testMethod() {
return "Hello from test";
}
@GetMapping(value = "/test/{count}")
public String testMethod(@PathVariable(value = "count") Integer count) {
return "Hello from Parameterized Test. Count: " + count;
}
}
因此,您要指定控制器的路径或路由,总是最好指定value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.