SpringBoot 通过uri获取头部类requestMapping注解信息
版本:SpringBoot 2.0.+
研究SpringBoot源码,以下方式为最优获取方式:直接从Spring容器获取
/**
* 获取请求uri 头部类requestMapping注解信息
* @return
*/
public String handleControllerReqMapper() {
try {
if (this.handlerMappings == null) {
Map<String, HandlerMapping> matchingBeans =
BeanFactoryUtils.beansOfTypeIncludingAncestors(SpringUtil.getApplicationContext(), HandlerMapping.class, true, false);
this.handlerMappings = new ArrayList<>(matchingBeans.values());
}
if (this.handlerMappings != null) {
for (HandlerMapping mapping : this.handlerMappings) {
HandlerExecutionChain handler = mapping.getHandler(contextService.getHttpServletRequest());
if (handler != null) {
HandlerMethod handlerMethod = (HandlerMethod) handler.getHandler();
RequestMapping annotation = handlerMethod.getBeanType().getAnnotation(RequestMapping.class);
return annotation.value()[0];
}
}
}
} catch (Exception e) {
logger.error("error {}", e);
}
return null;
}