在Spring

时间:2018-06-12 10:11:08

标签: java spring spring-boot request-mapping

让我们假设以下控制器:

@RestController
public class MyController {

  @RequestMapping(method = GET, path = "/info")
  public InfoModel getInfo(){ 
    ... 
  }

  @RequestMapping(method = GET, path = "/{resourceId}")
  public ResourceModel getResource(@PathVariable("resourceId") String resourceId){
    ...
  }
}

问题是:卷曲GET /info时会调用哪种方法。

在我的所有测试中getInfo被调用,这似乎很清楚。

但我不是百分之百确定这是否只是一个幸运的竞争条件,或者是否指定静态路径的优先级高于变量路径。

即使经过一些研究,我也找不到这个案例的规范,只有一些相当古老(可能已过时)的博客文章。

我正在使用SpringBoot 2.0.2。

2 个答案:

答案 0 :(得分:4)

这不是一个幸运的竞争条件。没有路径变量的模式将始终优先。

请参阅Spring Pattern Comparison下的详细解释Request Mapping的Spring MVC文档。

答案 1 :(得分:0)

如果你在类级别指定了路径(@RequestMapping(“/ home”),如下所示

Not a valid JAR: /user/dir1/hadoop-streaming-2.6.0.jar

然后你必须卷曲GET / home / info。所有网址路径都由您定义/决定。