1. 程式人生 > >springboot2.0、spring5.0 攔截器配置WebMvcConfigurerAdapter過時使用WebMvcConfigurationSupport來代替 新坑

springboot2.0、spring5.0 攔截器配置WebMvcConfigurerAdapter過時使用WebMvcConfigurationSupport來代替 新坑

在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介面