Java 配置中忽略 Spring MVC HandlerInterceptor

标签 spring spring-mvc

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

XML 配置(有效):

<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配置示例中,前置或后处理方法都没有被调用?

我错过了什么?

谢谢。

最佳答案

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

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

关于Java 配置中忽略 Spring MVC HandlerInterceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21799566/

相关文章:

java - 初始化时关闭 Spring

spring-mvc - Spring MVC -> Wicket 集成

java - Spring Web 应用程序在 tomcat-7.0.37 上出现 404 错误

java - 应考虑使用 whatsapp 与客户通信的 API

java - Spring Thymeleaf 中枚举的本地化

java - 无法打开 JPA EntityManager 进行事务。 JTA EntityManager 无法使用 getTransaction()

java - 从 jar 访问 bean 定义 xml 文件到 war 的主上下文文件

java - 如何在 Spring 中使用 @autowired 标签在子对象之间切换?

spring - 如何在 Spring MVC 拦截器中使用 URI 模板?

java - 使用泛型时,RestClient 不会返回精确的未编码对象