繼承WebMvcConfigurationSupport后自動(dòng)配置不生效及如何配置攔截器
網(wǎng)上有很多文章說(shuō)從spring boot2.0之后在構(gòu)造spring配置文件時(shí)建議推薦直接實(shí)現(xiàn)WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport ,經(jīng)測(cè)試實(shí)現(xiàn)WebMvcConfigurer是沒(méi)問(wèn)題,但繼承WebMvcConfigurationSupport類是會(huì)導(dǎo)致自動(dòng)配置失效的。
一、繼承WebMvcConfigurationSupport類是會(huì)導(dǎo)致自動(dòng)配置失效的原因
在spring boot的自定義配置類繼承 WebMvcConfigurationSupport 后,發(fā)現(xiàn)自動(dòng)配置的靜態(tài)資源路徑(classpath:/META/resources/,classpath:/resources/,classpath:/static/,classpath:/public/)不生效。
首先看一下 自動(dòng)配置類的定義:

這是因?yàn)樵?springboot的web自動(dòng)配置類 WebMvcAutoConfiguration 上有條件注解
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
這個(gè)注解的意思是在項(xiàng)目類路徑中 缺少 WebMvcConfigurationSupport類型的bean時(shí)改自動(dòng)配置類才會(huì)生效,所以繼承 WebMvcConfigurationSupport 后需要自己再重寫(xiě)相應(yīng)的方法。
如果想要使用自動(dòng)配置生效,又要按自己的需要重寫(xiě)某些方法,比如增加 viewController ,則可以自己的配置類可以繼承 WebMvcConfigurerAdapter 這個(gè)類。不過(guò)在spring5.0版本后這個(gè)類被丟棄了 WebMvcConfigurerAdapter ,雖然還可以用,但是看起來(lái)不好。

這是類上的注釋,意思是spring 5.0后要使用Java8,而在Java8中接口是可以有default方法的,所以這個(gè)類就沒(méi)必要了。所以我們只需要在自定義配置類中直接實(shí)現(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后會(huì)導(dǎo)致自動(dòng)配置失效,所以這里要指定默認(rèn)的靜態(tài)資源的位置。同時(shí)要注意不能寫(xiě)成
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 如何在ASP.NET Core 的任意類中注入Configuration
- C# 添加對(duì)System.Configuration.dll文件的引用操作
- matplotlib運(yùn)行時(shí)配置(Runtime Configuration,rc)參數(shù)rcParams解析
- mybatis的Configuration詳解
- .Net Core3.0 配置Configuration的實(shí)現(xiàn)
- 詳解@ConfigurationProperties實(shí)現(xiàn)原理與實(shí)戰(zhàn)
- @ConfigurationProperties綁定配置信息至Array、List、Map、Bean的實(shí)現(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擴(kuò)展組件
- SpringBoot 中 AutoConfiguration的使用方法
- MyBatis異常-Property ''configLocation'' not specified, using default MyBatis Configuration
- Spring源碼解析之Configuration
相關(guān)文章
java網(wǎng)上商城項(xiàng)目第1篇之用戶注冊(cè)模塊
這篇文章主要為大家詳細(xì)介紹了java網(wǎng)上商城項(xiàng)目第1篇之用戶注冊(cè)模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
J2SE基礎(chǔ)之在Eclipse中運(yùn)行hello world
本文的內(nèi)容非常的簡(jiǎn)單,跟隨世界潮流,第一個(gè)Java程序輸出“Hell World!”。希望大家能夠喜歡2016-05-05
關(guān)于@Autowierd && @Resource 你真的了解嗎
這篇文章主要介紹了關(guān)于@Autowierd && @Resource的具體使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
ScheduledExecutorService任務(wù)定時(shí)代碼示例
這篇文章主要介紹了ScheduledExecutorService任務(wù)定時(shí)代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
SpringBoot環(huán)境配置知識(shí)總結(jié)
今天帶大家了解SpringBoot環(huán)境配置的相關(guān)知識(shí),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
springboot對(duì)壓縮請(qǐng)求的處理方法
這篇文章主要介紹了springboot對(duì)壓縮請(qǐng)求的處理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Java Flink與kafka實(shí)現(xiàn)實(shí)時(shí)告警功能過(guò)程
這篇文章主要介紹了Java Flink與kafka實(shí)現(xiàn)實(shí)時(shí)告警功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
SpringBoot集成MyBatisPlus+MySQL的實(shí)現(xiàn)
MybatisPlus是國(guó)產(chǎn)的第三方插件, 它封裝了許多常用的CURDapi,免去了我們寫(xiě)mapper.xml的重復(fù)勞動(dòng),本文主要介紹了SpringBoot集成MyBatisPlus+MySQL的實(shí)現(xiàn),感興趣的可以了解一下2023-10-10
Spring?WebClient實(shí)戰(zhàn)示例
本文主要介紹了Spring?WebClient實(shí)戰(zhàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

