在Java配置中忽略了Spring MVC HandlerInterceptor

时间:2014-02-15 15:29:15

标签: spring spring-mvc

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

XML Config(有效):

<mvc:annotation-driven />
<mvc:interceptors>
    <bean class="com.mycompany.MyHandlerInterceptor" />
</mvc:interceptors>

Java Config(永远不会调用拦截器)

@Configuration
public class MvcConfig extends WebMvcConfigurationSupport {

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

    // ...
}

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

我错过了什么?

感谢。

1 个答案:

答案 0 :(得分:5)

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

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