说下我的原因,因为不熟悉拦截器,所以一开始以为一个拦截器要对应一个WebMvcConfigurer配置类所以写了两个配置类,自然也就重写了两次addInterceptors方法。导致只有第一个拦截器生效,后面的没有用。
其实只有第一个配置类会生效,后面的都没用,所以不管写了几个拦截器,只要注入到一个配置类中,根据顺序调用即可。
@Configuration
public class MvcConfigurer implements WebMvcConfigurer {
@Resource
private AdminInterceptor adminInterceptor;
@Resource
private FirmInterceptor firmInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
/**
* 拦截器按照顺序执行
*addPathPatterns 用于添加拦截规则
*excludePathPatterns 用于排除拦截
*/
registry.addInterceptor(adminInterceptor).addPathPatterns("/ad/**").excludePathPatterns("/ad/public/**");
registry.addInterceptor(firmInterceptor).addPathPatterns("/fm/**").excludePathPatterns("/fm/**/public/**");
}
}

本文介绍了在Spring MVC中配置拦截器时遇到的问题,即误认为每个拦截器都需要一个单独的WebMvcConfigurer配置类,导致只有第一个拦截器生效。实际上,所有的拦截器可以注入到同一个配置类的addInterceptors方法中,按添加顺序执行。通过调整配置,确保了所有拦截器都能正确工作。
4710

被折叠的 条评论
为什么被折叠?



