在之前的文章(springboot配置静态资源访问路径)中说过,springboot默认的加载静态资源的地方是在resources目录下的static文件夹下,其实除了resources目录下得static文件夹可以被访问,在resources目录下创建resources文件夹、public文件夹、META-INF/resources文件夹都是可以被访问到的,只不过springboot默认推荐我们使用static文件夹,而且查找的优先级是META-INF/resources》public》resources》static。

当我们要修改springboot默认的静态资源加载路径的时候,我们可以直接在配置文件properties、yml中直接设置,或者找个配置类(使用@configuration注解的类)使其继承org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter或者org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport并重写addResourceHandlers(ResourceHandlerRegistry registry)方法,这个方法在WebMvcConfigurerAdapter和WebMvcConfigurationSupport中都是空实现。

在此,建议在springboot 1.x版本使用WebMvcConfigurerAdapter这个类,2.x版本实现WebMvcConfigurer 接口,不推荐使用WebMvcConfigurationSupport和@EnableWebMvc注解。因为springboot默认会给我们添加一个配置类WebMvcAutoConfiguration,但是这个配置类的加载是有条件的( @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)),只有缺少WebMvcConfigurationSupport配置类才会生效,当我们使用继承WebMvcConfigurationSupport或者@EnableWebMvc注解(这个注解会导入DelegatingWebMvcConfiguration,这个类继承自WebMvcConfigurationSupport

)时,springboot的就不会帮我们加载WebMvcAutoConfiguration这个配置类了,这个时候就需要我们进行一些webmvc的配置。而且比较坑的是如果我们使用继承WebMvcConfigurationSupport这种方式,不能多次使用,也就是说如果我们有两个及以上配置类继承WebMvcConfigurationSupport时,只会有一个生效;当我们即使用@EnableWebMvc又有配置类继承WebMvcConfigurationSupport时,我们的配置类是会生效的。

@EnableWebMvc、WebMvcConfigurationSupport、WebMvcConfigurerAdapter这三个使用效果:

  1. 使用WebMvcConfigurerAdapter  =====》全部生效
  2. 使用WebMvcConfigurationSupport(多个)   ====》某一个生效,其他不生效
  3. 使用WebMvcConfigurerAdapter + WebMvcConfigurationSupport       ====》WebMvcConfigurationSupport生效
  4. 使用@EnableWebMvc+ WebMvcConfigurationSupport       ====》WebMvcConfigurationSupport生效
  5. 使用@EnableWebMvc+ WebMvcConfigurerAdapter     ====》WebMvcConfigurerAdapter 不生效

最新文章

  1. Laravel [1045] 解决方法 Access denied for user 'homestead'@'localhost'
  2. CodeUI Test:创建第一个CodeUI Test
  3. CentOS 7 用户怎样安装 LNMP(Nginx+PHP+MySQL)
  4. sublime text 3 license 2016.05
  5. oracle 11g install linux
  6. C#微信公众平台开发—access_token的获取存储与更新
  7. SQL TUNNING
  8. c3p0配置详解
  9. 在CSS中,BOX的Padding属性的数值赋予顺序为
  10. 转载:as3.0下对象类型返回值与变量默认值的详细说明
  11. Microsoft Visual Studio Ultimate 2013 旗舰版 有效注册密钥
  12. 建站服务器的最优选择之Windows Or Linux
  13. JSON 和 JSONP
  14. apache pk nginx pk Lighttpd
  15. 关于K-Means算法
  16. 微服务化不同阶段 Kubernetes 的不同玩法
  17. 什么是BFC
  18. Aladdin and the Flying Carpet LightOJ - 1341 (素数打表 + 算术基本定理)
  19. 京东无人超市的成长之路 如何利用AI技术在零售业做产品创新?
  20. LeetCode 463. Island Perimeter岛屿的周长 (C++)

热门文章

  1. 常见的 PHP 面试题和答案分享
  2. Springboot启动流程简单分析
  3. ASP.NET Core中配置监听URLs的五种方式
  4. 怎么高效学习python?其实只需要这个方法,快速掌握不叫事儿
  5. Delphi Unicode转中文
  6. Python程序设计 实验 1 熟悉 IDLE 和在线编程平台
  7. 视频+图文 String类干货向总结
  8. 13.create-react-app 构建的项目使用代理 proxy
  9. python3-邮件发送-不同格式
  10. 数值计算方法实验之newton多项式插值 (Python 代码)