SpringBoot——启动服务时获取所有controller层的接口url列表

时间:2025-03-22 07:34:28
@Slf4j @Component @Order(1) @RequiredArgsConstructor public class CommandLineInitResource implements CommandLineRunner { /** * 上下文 */ @Autowired WebApplicationContext applicationContext; @Value("${}") private String routePrefix; @Override public void run(String... args) throws Exception { //获取controller相关bean RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); //获取method Map<RequestMappingInfo, HandlerMethod> methodMap = mapping.getHandlerMethods(); //构造url list List<String> urlList = new ArrayList<>(); //获取methodMap的key集合 for (RequestMappingInfo info : methodMap.keySet()) { //controller url集合 Set<String> urlSet = info.getPatternsCondition().getPatterns(); //controller url拼接路由前缀 urlList.addAll(urlSet.stream().map(url -> //校验前缀 routePrefix.startsWith("/") ? (routePrefix + url) : ("/" + routePrefix + url) ).collect(Collectors.toList())); //获取所有方法类型 //Set<RequestMethod> methodSet = ().getMethods(); } log.info("web controller urlList: {}", urlList); } }