我正在尝试将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句柄方法?
我错过了什么?
感谢。
答案 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;
}