You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在控制器类级别使用@RequestMapping配置动态URL是否可行?

你所写的代码写法完全可行,Spring MVC 及 Spring Boot 均原生支持类级别 @RequestMapping 携带动态路径变量。

实现逻辑说明

类上定义的 @RequestMapping 路径会自动和该类下所有方法的请求映射路径拼接,类路径上声明的路径变量 {somethingsId} 会在整个控制器的请求匹配周期内生效,你可以直接在方法参数中通过 @PathVariable 注解获取该变量的值,无需在每个方法的路径中重复定义该参数。

简化用法

如果该控制器下所有方法都需要用到 somethingsId,还可以结合请求作用域将路径变量注入为类成员变量,进一步简化重复代码:

@RestController
@RequestMapping("/something/{somethingsId}")
@RequestScope // 声明控制器为请求作用域
public class ExampleController{
    // 直接注入类级别的路径变量
    @PathVariable("somethingsId")
    private String somethingsId;

    @GetMapping("/getOtherThing")
    public ResponseEntity<String> getOtherThing(){
        // 业务逻辑直接使用成员变量即可
        return ResponseEntity.ok(somethingsId);
    }

    @GetMapping("/anotherEndpoint")
    public ResponseEntity<String> anotherEndpoint(){
        return ResponseEntity.ok("当前操作ID为:" + somethingsId);
    }
}

额外使用提示

  • 类级别的路径变量同样支持正则表达式约束,例如 @RequestMapping("/something/{somethingsId:\\d+}") 可以限制仅数字类型的ID匹配该控制器
  • 多个控制器定义带路径变量的前缀路径时,Spring会按照最长匹配原则分配请求,不会出现规则冲突
  • 该写法完全符合你按公共路径参数拆分控制器的需求,可以避免每个方法重复书写相同的路径前缀,大幅提升代码可维护性

内容的提问来源于stack exchange,提问作者Pmsmm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:15:02