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

如何通过命令行查看Spring Boot应用中所有可用的路由

实现命令行打印Spring Boot应用所有路由的三种方案

方案1:Spring Boot Actuator端点方案(无代码侵入首选)

无需额外编写业务代码,通过官方自带组件即可实现

  • 第一步:在build.gradle中添加Actuator依赖
    dependencies {
        // 其他依赖保持不变,新增以下内容
        implementation 'org.springframework.boot:spring-boot-starter-actuator'
    }
    
  • 第二步:在src/main/resources/application.properties中配置暴露路由查询端点
    # 可仅暴露mappings端点降低安全风险
    management.endpoints.web.exposure.include=mappings
    # 若不需要鉴权可关闭安全校验
    management.security.enabled=false
    
  • 第三步:用Gradle命令启动应用
    ./gradlew bootRun
    
  • 第四步:新开终端执行curl命令拉取并查看路由,建议配合jq格式化输出
    # 格式化输出所有路由信息
    curl http://localhost:8080/actuator/mappings | jq .
    # 仅过滤路由路径和请求方法,不需要额外工具
    curl http://localhost:8080/actuator/mappings | grep -E '"path"|"requestMethod"'
    
    若应用自定义了启动端口,将命令中的8080替换为实际端口即可。

方案2:启动时自动打印路由(不需要额外请求)

适合不想引入Actuator依赖的场景,仅需新增一个配置类即可

  • 在src/main/java下新增路由打印类,代码如下:
    import org.springframework.context.ApplicationListener;
    import org.springframework.context.event.ContextRefreshedEvent;
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
    
    @Component
    public class RoutePrinter implements ApplicationListener<ContextRefreshedEvent> {
        @Override
        public void onApplicationEvent(ContextRefreshedEvent event) {
            RequestMappingHandlerMapping mapping = event.getApplicationContext()
                    .getBean(RequestMappingHandlerMapping.class);
            mapping.getHandlerMethods().forEach((info, method) -> {
                System.out.printf("路径: %s | 请求方法: %s | 对应处理方法: %s%n",
                    info.getPatternsCondition() == null ? "无匹配路径" : info.getPatternsCondition().getPatterns(),
                    info.getMethodsCondition().getMethods(),
                    method);
            });
        }
    }
    
  • 直接执行启动命令即可在控制台看到所有路由输出:
    ./gradlew bootRun
    

方案3:静态扫描源码打印路由(不需要启动应用)

仅需要扫描源码即可快速获取路由,无需启动服务

  • 执行grep命令扫描所有路由注解:
    grep -r "@GetMapping\|@PostMapping\|@PutMapping\|@DeleteMapping\|@RequestMapping" \
    src/main/java --include="*.java" | grep -v test
    
  • 若只需提取路由路径,可配合awk做简单处理:
    grep -r "@.*Mapping" src/main/java --include="*.java" | grep -E '(".*")' | awk -F '"' '{print $2}'
    
    该方案如果存在类上统一加@RequestMapping前缀的情况,需要自行拼接前缀和方法上的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:21:01