@Test
public void listComboCourse() {
List> resultList =new ArrayList<>();
//RequestMappingHandlerMapping requestMappingHandlerMapping =
// applicationContext.getBean(RequestMappingHandlerMapping.class);
RequestMappingHandlerMapping requestMappingHandlerMapping =
(RequestMappingHandlerMapping)applicationContext.getBean("requestMappingHandlerMapping");
// 获取url与类和方法的对应信息
Map map = requestMappingHandlerMapping.getHandlerMethods();
for (Map.Entry mappingInfoHandlerMethodEntry : map.entrySet()) {
Map resultMap =new LinkedHashMap<>();
RequestMappingInfo requestMappingInfo = mappingInfoHandlerMethodEntry.getKey();
HandlerMethod handlerMethod = mappingInfoHandlerMethodEntry.getValue();
resultMap.put("className",handlerMethod.getMethod().getDeclaringClass().getName()); // 类名
Annotation[] parentAnnotations = handlerMethod.getBeanType().getAnnotations();
for (Annotation annotation : parentAnnotations) {
if (annotationinstanceof Api) {
Api api = (Api) annotation;
resultMap.put("classDesc",api.value());
resultMap.put("functionDesc",api.tags()[0].toString());//接口描述
}else if (annotationinstanceof RequestMapping) {
RequestMapping requestMapping = (RequestMapping) annotation;
if (null != requestMapping.value() && requestMapping.value().length >0) {
resultMap.put("classURL",requestMapping.value()[0]);//类URL
}
}
}
resultMap.put("methodName", handlerMethod.getMethod().getName()); // 方法名
Annotation[] annotations = handlerMethod.getMethod().getDeclaredAnnotations();
if (annotations !=null) {
// 处理具体的方法信息
for (Annotation annotation : annotations) {
if (annotationinstanceof ApiOperation) {
ApiOperation methodDesc = (ApiOperation) annotation;
String desc = methodDesc.value();
resultMap.put("methodDesc",desc);//接口描述
}
}
}
PatternsRequestCondition p = requestMappingInfo.getPatternsCondition();
for (String url : p.getPatterns()) {
if(!url.contains("app")){
resultMap.put("methodURL",url);//请求URL
}
}
RequestMethodsRequestCondition methodsCondition = requestMappingInfo.getMethodsCondition();
for (RequestMethod requestMethod : methodsCondition.getMethods()) {
resultMap.put("requestType",requestMethod.toString());//请求方式:POST/PUT/GET/DELETE
}
resultList.add(resultMap);
}
System.out.println(JSON.toJSON(resultList));
resultList.forEach(a->{
});
}