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

為{幸葍}努か 提交于 2019-11-28 11:01:58

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.

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!