在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接口