在Java配置中忽略了Spring MVC HandlerInterceptor

Way*_*neC 3 spring spring-mvc

我正在尝试将Spring项目从XML转换为Java配置,并使用HandlerInterceptors遇到以下问题:

XML配置(工作):

<mvc:annotation-driven />
<mvc:interceptors>
    <bean class="com.mycompany.MyHandlerInterceptor" />
</mvc:interceptors>
Run Code Online (Sandbox Code Playgroud)

Java Config(从不调用拦截器)

@Configuration
public class MvcConfig extends WebMvcConfigurationSupport {

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyHandlerInterceptor());
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

根据文档,这两个配置应该是等效的,但是在Java配置示例中,是否都没有调用前置或后置句柄方法?

我错过了什么?

谢谢.

Way*_*neC 6

这是我自己的错.我已经requestMappingHandlerMapping()在我的MVC Java配置中覆盖了并且没有在自定义HandlerMapping类上设置拦截器属性.

@Bean
@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
    CustomRequestHandlerMapping handlerMapping = new CustomRequestHandlerMapping();
    handlerMapping.setOrder(0);
    handlerMapping.setInterceptors(getInterceptors()); // <-- This was missing
    return handlerMapping;
}
Run Code Online (Sandbox Code Playgroud)