如何通过命令行查看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格式化输出
若应用自定义了启动端口,将命令中的8080替换为实际端口即可。# 格式化输出所有路由信息 curl http://localhost:8080/actuator/mappings | jq . # 仅过滤路由路径和请求方法,不需要额外工具 curl http://localhost:8080/actuator/mappings | grep -E '"path"|"requestMethod"'
方案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做简单处理:
该方案如果存在类上统一加@RequestMapping前缀的情况,需要自行拼接前缀和方法上的路径。grep -r "@.*Mapping" src/main/java --include="*.java" | grep -E '(".*")' | awk -F '"' '{print $2}'
内容的提问来源于stack exchange,提问作者robskrob
相关产品推荐
相关产品推荐

