在Spring-mvc拦截器中,如何访问处理程序控制器方法?

在Spring-mvc拦截器中,我想访问处理程序控制器方法

public class CustomInterceptor implements HandlerInterceptor { public boolean preHandle( HttpServletRequest request,HttpServletResponse response, Object handler) { log.info(handler.getClass().getName()); //access to the controller class //I want to have the controller method ... return true; } ... } 

我已经发现 :

如何对获得控制器,方法名,在弹簧拦截-prehandle法

但它只能解决。 我希望方法名称可以访问注释。

您可以将Object handler HandlerMethodHandlerMethod

 HandlerMethod method = (HandlerMethod) handler; 

但请注意,传递给preHandlehandler参数并不总是HandlerMethod (小心ClassCastException )。 然后, HandlerMethod可以使用方法来获取注释等。

HandlerInterceptors只会为您提供对HandlerMethod的访问权限,如果您已经注册了拦截器,如下所示:

 @EnableWebMvc @Configuration public class InterceptorRegistry extends WebMvcConfigurerAdapter { @Override public void addInterceptors(org.springframework.web.servlet.config.annotation.InterceptorRegistry registry) { registry.addInterceptor(new InternalAccessInterceptor()); registry.addInterceptor(new AuthorizationInterceptor()); } } 

在所有其他情况下,处理程序对象将指向控制器。 网上的大多数文档似乎都错过了这个微妙的观点。