springboot2.0、spring5.0 拦截器配置WebMvcConfigurerAdapter过时使用WebMvcConfigurationSupport来代替 新坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/InnovationAD/article/details/79959383

在springboot2.0之前 我们都是 继承 WebMvcConfigurerAdapter 来实现拦截器的配置。重写addInterceptors方法

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {

    }

但是已被废弃 我们使用继承WebMvcConfigurationSupport来替代(包含了WebMvcConfigurerAdapter,以及更多的扩展),使用这个类的时候要注意一些地方:

我们都知道在使用spring boot映射静态资源路径的时候可以在application.properties中添加配置

spring.mvc.static-path-pattern = /sh/static/**

这种写法在2.0之前 也就是在WebMvcConfigurerAdapter没有废弃 搭配使用的话是没有问题的(测试过是没有问题的),

但是在项目中我刚刚好用到了WebMvcConfigurationSupport类来配置拦截器,这时候启动项目时会发现映射根本没有成功,也就是说application.properties中添加配置的映射配置没有启动作用,然后我们会想到重写来进行映射:

@Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/sh/static/**").addResourceLocations("classpath:/static/");

        super.addResourceHandlers(registry);
    }

用过这种方法来配合WebMvcConfigurationSupport配置拦截器和过滤器好像就没有问题了(测试过没有问题)

总结:大家在使用2.0版本的springboot的时候 使用WebMvcConfigurationSupport类配置拦截器时一定要重写addResourceHandlers来实现静态资源的映射,不要使用application.properties中添加配置来实现映射,不然资源会映射不成功导致打开页面资源一直加载不到。会出现下面这种奇怪的问题

(如果有错误,欢迎大家指出,具体什么原因还在了解中,欢迎大家留言!)

更新:之前有人说配置了之后spring的自动配置会失效 ,如果要使用自动配置的话 可以实现 WebMvcConfigurer接口

猜你喜欢

转载自blog.csdn.net/InnovationAD/article/details/79959383