繼承WebMvcConfigurationSupport后自動配置不生效及如何配置攔截器
網(wǎng)上有很多文章說從spring boot2.0之后在構造spring配置文件時建議推薦直接實現(xiàn)WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport ,經(jīng)測試實現(xiàn)WebMvcConfigurer是沒問題,但繼承WebMvcConfigurationSupport類是會導致自動配置失效的。
一、繼承WebMvcConfigurationSupport類是會導致自動配置失效的原因
在spring boot的自定義配置類繼承 WebMvcConfigurationSupport 后,發(fā)現(xiàn)自動配置的靜態(tài)資源路徑(classpath:/META/resources/,classpath:/resources/,classpath:/static/,classpath:/public/)不生效。
首先看一下 自動配置類的定義:
這是因為在 springboot的web自動配置類 WebMvcAutoConfiguration 上有條件注解
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
這個注解的意思是在項目類路徑中 缺少 WebMvcConfigurationSupport類型的bean時改自動配置類才會生效,所以繼承 WebMvcConfigurationSupport 后需要自己再重寫相應的方法。
如果想要使用自動配置生效,又要按自己的需要重寫某些方法,比如增加 viewController ,則可以自己的配置類可以繼承 WebMvcConfigurerAdapter 這個類。不過在spring5.0版本后這個類被丟棄了 WebMvcConfigurerAdapter ,雖然還可以用,但是看起來不好。
這是類上的注釋,意思是spring 5.0后要使用Java8,而在Java8中接口是可以有default方法的,所以這個類就沒必要了。所以我們只需要在自定義配置類中直接實現(xiàn)
二、繼承WebMvcConfigurationSupport類如何配置攔截器的
@Configuration public class MyConfigurer extends WebMvcConfigurationSupport { @Override protected void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin","/emp/login","/js/**","/css/**","/images/**"); super.addInterceptors(registry); } @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); super.addResourceHandlers(registry); } }
注意這段代碼:
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
由于繼承WebMvcConfigurationSupport后會導致自動配置失效,所以這里要指定默認的靜態(tài)資源的位置。同時要注意不能寫成
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 如何在ASP.NET Core 的任意類中注入Configuration
- C# 添加對System.Configuration.dll文件的引用操作
- matplotlib運行時配置(Runtime Configuration,rc)參數(shù)rcParams解析
- mybatis的Configuration詳解
- .Net Core3.0 配置Configuration的實現(xiàn)
- 詳解@ConfigurationProperties實現(xiàn)原理與實戰(zhàn)
- @ConfigurationProperties綁定配置信息至Array、List、Map、Bean的實現(xiàn)
- 詳解配置類為什么要添加@Configuration注解
- Spring @Configuration注解及配置方法
- Springboot @Configuration @bean注解作用解析
- SpringBoot @ConfigurationProperties使用詳解
- 解析SpringBoot @EnableAutoConfiguration的使用
- Spring中基于Java的配置@Configuration和@Bean用法詳解
- @Configuration與@Component作為配置類的區(qū)別詳解
- .NET Core 3.0之創(chuàng)建基于Consul的Configuration擴展組件
- SpringBoot 中 AutoConfiguration的使用方法
- MyBatis異常-Property ''configLocation'' not specified, using default MyBatis Configuration
- Spring源碼解析之Configuration
相關文章
Springboot+Redis執(zhí)行l(wèi)ua腳本的項目實踐
本文主要介紹了Springboot+Redis執(zhí)行l(wèi)ua腳本的項目實踐,詳細的介紹Redis與Lua腳本的結合應用,具有一定的參考價值,感興趣的可以了解一下2023-09-09