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

Spring Boot中实现RequestMapping根路径复用的方案咨询

集中管理Spring API端点路径的解决方案

方案1:使用编译时常量字符串/数组

Spring的@RequestMapping要求参数为编译时常量表达式,可以通过定义静态final常量类统一管理路径,避免重复编写:

先创建常量类:

public class ApiConstants {
    // 基础项目路径数组
    public static final String[] BASE_PROJECT_PATHS = {"/api/en/myproject", "/api/de/myproject"};
    // 子项目后缀
    public static final String SUBPROJECT_SUFFIX = "/subproject";
}

在Controller中引用:

@RestController
@RequestMapping(value = ApiConstants.BASE_PROJECT_PATHS)
public ResponseEntity<?> myProject() {
    // 业务逻辑
}

@RestController
@RequestMapping(value = {
    ApiConstants.BASE_PROJECT_PATHS[0] + ApiConstants.SUBPROJECT_SUFFIX,
    ApiConstants.BASE_PROJECT_PATHS[1] + ApiConstants.SUBPROJECT_SUFFIX
})
public ResponseEntity<?> mySubProject() {
    // 业务逻辑
}

后续修改基础路径只需调整ApiConstants中的常量,所有引用处自动生效。

方案2:类级别@RequestMapping统一基础路径

如果相关接口可放在同一个Controller类中,直接在类上定义基础路径,方法仅添加子路径:

@RestController
@RequestMapping(value = {"/api/en/myproject", "/api/de/myproject"})
public class ProjectController {

    @GetMapping
    public ResponseEntity<?> myProject() {
        // 基础接口逻辑
    }

    @GetMapping("/subproject")
    public ResponseEntity<?> mySubProject() {
        // 子项目接口逻辑
    }
}

类上的基础路径会自动与方法路径拼接,修改类上的@RequestMapping即可统一更新所有接口的根路径,是最简洁的实现方式。

方案3:配置化路径(Spring属性占位符)

若需将路径放在外部配置文件中,可使用Spring属性占位符:

  1. 在application.properties中定义路径:
api.project.base-paths=/api/en/myproject,/api/de/myproject
  1. 在Controller中引用:
@RestController
@RequestMapping("${api.project.base-paths}")
public ResponseEntity<?> myProject() {
    // 业务逻辑
}

@RestController
@RequestMapping("${api.project.base-paths}/subproject")
public ResponseEntity<?> mySubProject() {
    // 业务逻辑
}

Spring会自动解析逗号分隔的多路径,后续修改只需调整配置文件,无需改动代码,适合需要动态调整路径的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:45:04