我正在尝试在应用程序中配置拦截器,但无法使其正常工作。

在我的应用程序配置类中,我以以下方式配置:

@Configuration
@EnableWebMvc
public class AppContextConfiguration extends WebMvcConfigurerAdapter {
    ...
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor());
    }
    ...
}

和拦截器:
public class MyInterceptor extends HandlerInterceptorAdapter{

    private static final Logger logger = LoggerFactory.getLogger(MyInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
        Object handler) throws Exception {

        logger.debug("MyInterceptor - PREHANDLE");
    }
}

有人知道为什么不被调用吗?

最佳答案

我使用的是Spring Boot,并且遇到了相同的问题,即调用addInterceptors()来注册拦截器,但是该拦截器在请求期间从未触发过。但是XML配置没有问题。

基本上,您不需要WebMvcConfigurerAdapter类。您只需要声明@Bean类型的MappedInterceptor:

@Bean
public MappedInterceptor myInterceptor()
{
    return new MappedInterceptor(null, new MyInterceptor());
}

10-07 16:15