/**
* 获取所有可访问的web请求路径
*
* @return
*/
List<String> getAllMappingPath(String contextPath) {
List<String> list = new ArrayList<>();
// 获取request
HttpServletRequest req = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
// 获取spring容器
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(req.getServletContext());
// 所有可请求路径的抽象类集合
AbstractHandlerMethodMapping<RequestMappingInfo> objHandlerMethodMapping =
(AbstractHandlerMethodMapping<RequestMappingInfo>) applicationContext.getBean("requestMappingHandlerMapping");
// 所有可接受请求的路径
Map<RequestMappingInfo, HandlerMethod> mapRet = objHandlerMethodMapping.getHandlerMethods();
// 转换为字符串集合返回
for (RequestMappingInfo requestMappingInfo : mapRet.keySet()) {
Set set = requestMappingInfo.getPatternsCondition().getPatterns();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
list.add(contextPath + iterator.next().toString());
}
}
return list;
}
也可以使用SpringApplication.run的返回值返回的ConfigurableApplicationContext context替换request对象进行获取