SpringBoot2.x使用拦截器(新旧版本导致有坑)

SpringBoot1.x添加拦截器

1,写一个类,继承WebMvcConfigurerAdapter抽象类
.2,重写addInterceptors方法,调用registry.addInterceptor把拦截器添加进去
.3,这个类也记得添加上@Configuration或者@SpringBootConfiguration注解。

SpringBoot2.x添加拦截器

如图1所示,因为SpringBoot2.x对应的是Spring5.x,而Spring5.0以后,WebMvcConfigurerAdapter已经过时了。

 

2,这时我们可以继承WebMvcConfigurationSupport或者实现WebMvcConfigurer接口。
      这时候,大坑来了:
            一旦继承WebMvcConfigurationSupport后就会出现新的问题,会发现Spring Boot的WebMvc自动配置失效,具体表现比例访问不到静态资源(JS,CSS等)了,这是因为WebMvc的自动配置都在WebMvcAutoConfiguration类中,但是类中有这个注解@ConditionalOnMissingBean({WebMvcConfigurationSupport.class}),意思是一旦在容器中检测到WebMvcConfigurationSupport这个类,WebMvcAutoConfiguration类中的配置都不生效。所以一旦我们自己写的配置类继承了WebMvcConfigurationSupport,相当于容器中已经有了WebMvcConfigurationSupport,所以默认配置都不会生效,都得自己在配置文件中配置。

 

3,所以最后我还是推荐实现WebMvcConfigurer接口来添加拦截器

4、测试访问静态资源,那是没问题的

 

 

 

你可能感兴趣的:(Springboot)