让我们假设以下 Controller :
@RestController
public class MyController {
@RequestMapping(method = GET, path = "/info")
public InfoModel getInfo(){
...
}
@RequestMapping(method = GET, path = "/{resourceId}")
public ResourceModel getResource(@PathVariable("resourceId") String resourceId){
...
}
}
问题是:curl GET/info
时会调用哪个方法。
在我的所有测试中,都调用了 getInfo
,这似乎很清楚。
但我不能 100% 确定这是否只是一个幸运的竞争条件,或者是否指定静态路径比变量路径具有更高的优先级。
即使经过一些研究,我也找不到此案例的规范,只有一些相当古老(并且可能已经过时)的博客文章。
我使用的是 SpringBoot 2.0.2。
最佳答案
这不是一个幸运的竞争条件。没有路径变量的模式将始终优先。
请参阅 Spring MVC 文档,其中详细解释了所有内容 Request Mapping在模式比较
下。
关于java - Spring 中是否总是调用特定的 @RequestMapping 以支持变量 @RequestMapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50814611/