在以前的文章(springboot配置靜態資源訪問路徑)中說過,springboot默認的加載靜態資源的地方是在resources目錄下的static文件夾下,其實除了resources目錄下得static文件夾能夠被訪問,在resources目錄下建立resources文件夾、public文件夾、META-INF/resources文件夾都是能夠被訪問到的,只不過springboot默認推薦咱們使用static文件夾,並且查找的優先級是META-INF/resources》public》resources》static。html
當咱們要修改springboot默認的靜態資源加載路徑的時候,咱們能夠直接在配置文件properties、yml中直接設置,或者找個配置類(使用@configuration註解的類)使其繼承org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter或者org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport並重寫addResourceHandlers(ResourceHandlerRegistry registry)方法,這個方法在WebMvcConfigurerAdapter和WebMvcConfigurationSupport中都是空實現。web
在此,建議在springboot 1.x版本使用WebMvcConfigurerAdapter這個類,2.x版本實現WebMvcConfigurer 接口,不推薦使用WebMvcConfigurationSupport和@EnableWebMvc註解。由於springboot默認會給咱們添加一個配置類WebMvcAutoConfiguration,可是這個配置類的加載是有條件的( @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)),只有缺乏WebMvcConfigurationSupport配置類纔會生效,當咱們使用繼承WebMvcConfigurationSupport或者@EnableWebMvc註解(這個註解會導入DelegatingWebMvcConfiguration,這個類繼承自WebMvcConfigurationSupportspring
)時,springboot的就不會幫咱們加載WebMvcAutoConfiguration這個配置類了,這個時候就須要咱們進行一些webmvc的配置。並且比較坑的是若是咱們使用繼承WebMvcConfigurationSupport這種方式,不能屢次使用,也就是說若是咱們有兩個及以上配置類繼承WebMvcConfigurationSupport時,只會有一個生效;當咱們即便用@EnableWebMvc又有配置類繼承WebMvcConfigurationSupport時,咱們的配置類是會生效的。springboot
@EnableWebMvc、WebMvcConfigurationSupport、WebMvcConfigurerAdapter這三個使用效果:mvc