java - Spring 中是否总是调用特定的 @RequestMapping 以支持变量 @RequestMapping

标签 java spring spring-boot request-mapping

让我们假设以下 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/

相关文章:

java - REST Spring Boot 中的复合主键用法

javax.security.auth.login.LoginException : Security Exception

java - 具有自定义委托(delegate)的 MultiResourceItemReader 不断读取同一个文件

java - 在 Spring 批处理中处理两个文件

java - Spring Boot - 加载多个 YAML 文件

Spring DI - REST 服务中的 Autowired 属性为 null

java - 如何将 spring gcp PubSubTemplate 连接到本地实例?

java - Spring Boot Junit 测试预期为 200,但禁止获取 403

java - 清理大型遗留 Java 项目

javascript - 为什么 Cesium 查看器在我添加时不显示模型?