Springboot项目获取所有的接口
程序员文章站
2022-07-10 09:17:35
@Autowiredprivate WebApplicationContext applicationContext;@Overridepublic List getAllUrl() { RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); // 获取url与类和方法的对应信息 Map
@Autowired
private WebApplicationContext applicationContext;
@Override
public List getAllUrl() {
RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
// 获取url与类和方法的对应信息
Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
for (Map.Entry<RequestMappingInfo, HandlerMethod> m : map.entrySet()) {
Map<String, String> map1 = new HashMap<String, String>();
RequestMappingInfo info = m.getKey();
HandlerMethod method = m.getValue();
//获取当前方法所在类名
Class<?> bean = method.getBeanType();
//使用反射获取当前类注解内容
Api api = bean.getAnnotation(Api.class);
RequestMapping requestMapping = bean.getAnnotation(RequestMapping.class);
String[] value = requestMapping.value();
map1.put("parent",value[0])
//获取方法上注解以及注解值
ApiOperation methodAnnotation = method.getMethodAnnotation(ApiOperation.class);
String privilegeName = methodAnnotation.notes();
PatternsRequestCondition p = info.getPatternsCondition();
for (String url : p.getPatterns()) {
map1.put("url", url);
}
map1.put("className", method.getMethod().getDeclaringClass().getName()); // 类名
map1.put("method", method.getMethod().getName()); // 方法名
RequestMethodsRequestCondition methodsCondition = info.getMethodsCondition();
for (RequestMethod requestMethod : methodsCondition.getMethods()) {
map1.put("type", requestMethod.toString());
}
list.add(map1);
}
return list;
}
本文地址:https://blog.csdn.net/qq_33371766/article/details/110248376