SpringWeb环境下获取请求对应接口方法
前言
我们经常会遇到在 Spring 的 Filter 或者 Interceptor 中,想获取请求对应的接口方法,
或者是对应接口方法、注解、类等信息时,不需要手动的去对请求路径和方法去寻找。
只需要注入一个由 Spring 提供的请求处理映射类 RequestMappingHandlerMapping
即可完成。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
@Slf4j @WebFilter(filterName = "globleFilter", urlPatterns = "/*") @Component public class GlobleFilter extends OncePerRequestFilter {
@Resource private RequestMappingHandlerMapping handlerMapping;
@SneakyThrows @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) { HandlerExecutionChain handler = handlerMapping.getHandler(request);
if (handler == null) { filterChain.doFilter(request, response); return; } List<HandlerInterceptor> interceptorList = handler.getInterceptorList();
HandlerMethod handlerMethod = (HandlerMethod) handler.getHandler();
Method method = handlerMethod.getMethod(); ApiOperation annotation = handlerMethod.getMethodAnnotation(ApiOperation.class); MethodParameter[] methodParameters = handlerMethod.getMethodParameters(); MethodParameter returnType = handlerMethod.getReturnType();
} }
|
结语
通过以上示例可以发现,只要是在Servlet请求环境中,都可以通过注入以及 HttpServletRequest
请求对象快速获取对应的接口方法,
并且可以获得反射的方法对象,方便于做进一步的处理。