在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
HandlerMethod
为HandlerMethod
。
HandlerMethod method = (HandlerMethod) handler;
但请注意,传递给preHandle
的handler
参数并不总是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()); } }
在所有其他情况下,处理程序对象将指向控制器。 网上的大多数文档似乎都错过了这个微妙的观点。