我有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
如果我评论一种方法都可以正常工作
答案 0 :(得分:0)
你所犯的错误是你告诉@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