SpringMVC配置拦截器失效解决办法

文章讲述了在SpringMVC中配置Interceptor拦截器时遇到的问题,即在`@EnableWebMvc`启用情况下,错误地在多个配置类中添加拦截器导致失效。解决方法是将拦截器配置移到`SpringMvcConfigSupport`基类中,确保只有一个配置处理WebMvc。
摘要由CSDN通过智能技术生成

1.编写SpringMVC中Interceptor拦截器方法

2.在SpringmvcConfig配置类中进行添加拦截器,并配置拦截器路径

@Configuration
@ComponentScan({"com.zkr.controller", "com.zkr.config"})
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer{
    @Autowired
    private ProjectInterceptor projectInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //配置多拦截器
        registry.addInterceptor(projectInterceptor)
                .addPathPatterns("/interceptorTest", "/interceptorTest/*");
    }

}

3.进行调试路径,发现拦截器并未生效!!! 

排查原因:

而我们的添加拦截器配置是在mvc的配置文件中直接继承的

  • 而容器中只需要维护一个WebMvcConfigurationSupport即可,多了则会失效
  • 在使用@EnableWebMvc的情况下,又去继承WebMvcConfigurationSupport进行配置所以导致了失效也就是说我多写了一个

知道原因后我们也就不难解决

只需要将mvc添加拦截器的代码写到SpringMvcConfigSupport中就可以定义多个 SpringMvcConfigSupport类的问题

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {

    @Autowired
    private ProjectInterceptor projectInterceptor;
    
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/pages/**")
                .addResourceLocations("/pages/");
        registry.addResourceHandler("/css/**")
                .addResourceLocations("/css/");
        registry.addResourceHandler("/js/**")
                .addResourceLocations("/js/");
        registry.addResourceHandler("/plugins/**")
                .addResourceLocations("/plugins/");
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //配置多拦截器
        registry.addInterceptor(projectInterceptor)
                .addPathPatterns("/interceptorTest", "/interceptorTest/*");
    }

}
@Configuration
@ComponentScan({"com.itheima.controller", "com.itheima.config"})
@EnableWebMvc
public class SpringMvcConfig{
}

此时在进行,发现拦截器失效的问题就可以解决了,ok下课

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值