In a Spring-mvc interceptor, how can I access to the handler controller method?

后端 未结 2 1781
余生分开走
余生分开走 2020-12-10 13:21

In a Spring-mvc interceptor I want to access to the handler controller method

public class CustomInterceptor implements HandlerInterceptor  {
    public bool         


        
相关标签:
2条回答
  • 2020-12-10 13:59

    You can cast the Object handler to HandlerMethod.

    HandlerMethod method = (HandlerMethod) handler;
    

    Note however that the handler argument passed to preHandle is not always a HandlerMethod (careful with ClassCastException). HandlerMethod then has methods you can use to get annotations, etc.

    0 讨论(0)
  • 2020-12-10 14:06

    HandlerInterceptors will only provide you access to the HandlerMethod IF you have registered your interceptors like so :

    @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());
        }
    
    }
    

    In all other cases, the handler object will point to the controller. Most documentation on the web seemed to have missed this subtle point.

    0 讨论(0)
提交回复
热议问题