我正在尝试在应用程序中配置拦截器,但无法使其正常工作。
在我的应用程序配置类中,我以以下方式配置:
@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());
}