spring boot 对 web 静态资源的管理

经过前两篇文章我们知道spring boot最大的功能就是自动配置。主要是通过以下两个类实现该功能:

  • xxxxAutoConfiguration :帮我们给容器中自动配置组件
  • xxxxProperties : 配置类来封装配置文件的内容

进行web应用开发的时候,也是需要这两个类来给我们自动配置,这两个类是:WebMvcAutoConfigurationResourceProperties ,通过它们来管理一些静态资源。

WebMvcAutoConfiguration是如何映射静态资源的呢

以jar包的方式引入静态资源

(1) 什么是以jar包形式管理静态资源呢?
我们进行web项目开发时,经常会用到 jquery.js ,以前的做法是把 jquery 源文件放到项目的类路径资源文件中,现在可以不用这么做,可以以jar包的形式引入到项目中:访问webjar的官网:https://www.webjars.org/,找到 jquery ,然后引入到 pom 文件中


(2) 那当web项目启动时,是如何找 jquery 的呢?看源码 WebMvcAutoConfiguration 中有一个 addResourceHandlers 方法:

红色线框中的这段代码告诉我们如果项目路径 classpath:/META-INF/resources/webjars/ 存在,先去这里找静态资源文件。


然后可以通过:localhost:8080/webjars/jquery/3.3.1-1/jquery.js 访问静态资源

项目的资源文件夹中管理静态资源文件

如果我们的项目没有通过webjar的形式引入静态资源文件,我们只能去类路径下的资源文件夹中找静态资源了,看 WebMvcAutoConfigurationaddResourceHandlers 方法

this.resourceProperties.getStaticLocations() 是什么?

表示我们可以去以下路径中找资源文件:

classpath:/META‐INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/

spring mvc 的自动配置

spring boot 默认对 spring mvc做了如下配置

  • ContentNegotiatingViewResolver and BeanNameViewResolver
  • 默认支持静态资源文件夹,webjar形式访问静态资源
  • 自动注册了Converter, GenericConverter 和 Formatter
  • 默认支持 HttpMessageConverters
  • 默认支持 MessageCodesResolver
  • 默认使用 ConfigurableWebBindingInitializer

扩展spring mvc

自定义一个配置类(@Configuration),该配置类是 WebMvcConfigurer 接口的实现类,且该配置类不能使用 @EnableWebMvc 标注

spring boot对spring mvc的自动配置介绍

【spring boot】第3篇:spring boot 进行 web 开发相关推荐

  1. win7 x64 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发--爬取IThome热评(一)

    因为工作需要,我准备在win7 x64系统上基于springboot +elasticsearch+redis搭建全文索引服务器. 1. elasticsearch安装比较方便,直接去官网下载了ela ...

  2. spring cloud学习进阶篇:Spring Cloud Sleuth + Zipkin 实现分布式跟踪解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 简述 使用 spring cloud 用到最多的是各种rest服务调用,Twitter的Zipkin 是一种实现分布式跟踪解决 ...

  3. python 框架和 spring mvc_Django和Spring MVC,该选择哪个框架进行Web开发学习?

    不邀自来,仅仅从我的经验来说(一年安卓开发,两年 Django 开发),我是比较推荐 Django 的. 项目完整介绍初步开发的书要么很老,要么很罕见少,我没看见过.其实刷官网并且查 Github 的 ...

  4. Spring全家桶第一篇--认识全家桶

    Spring全家桶第一篇--认识全家桶 前言 什么是SPRING全家桶 前言 打算更新一下这两年来接触到的SPRING WEB方面的知识,此篇开搞.不定时更新 什么是SPRING全家桶 官网:http ...

  5. Spring核心技术原理-(2)-通过Web开发演进过程了解一下为什么要有Spring AOP?

    上一篇: Spring核心技术原理-(1)-通过Web开发演进过程了解一下为什么要有Spring? 上一篇从Web开发演进过程的一个侧面简述了一下为什么会有Spring?事实上只介绍了为什么会有Spr ...

  6. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  7. spring boot 跨域请求_SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition...

    191222-SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition 在 spring mvc 中,我们知道用户发起的请求可以通过 url 匹配到我们通过@R ...

  8. Elasticsearch实战篇——Spring Boot整合ElasticSearch

    2019独角兽企业重金招聘Python工程师标准>>> 当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来 ...

  9. spring Boot 2 基础篇 。内含 整合一个spring boot 的 小案例

    目录 springBoot2基础篇 前言与开发环境 一.快速创建Boot项目 1.使用spring提供的快速构建 2.基于maven的手动构建 3.在Idea中隐藏指定文件/文件夹 二.SpringB ...

最新文章

  1. SQL存储过程实现分页查询
  2. 每天一个linux命令(14):head 命令
  3. linux /etc/rc.d/目录的详解
  4. java web netty_基于Netty的非Servlet规范 JavaWeb框架及高性能 Java服务器
  5. 百度地图SDK v3.6.0以上版本setOnMarkerClickListener 失效的问题解决
  6. windows下ab的安装和压测
  7. 推荐系统--矩阵分解(2)
  8. python图像处理模块_Python图像处理库PIL的ImageEnhance模块使用介绍
  9. HBuilder实现WiFi调试Android
  10. c语言指针教学word,C语言中的指针和指针教学
  11. Maven - Maven3实战学习笔记(2)坐标和依赖
  12. PASCAL VOC数据集分析及下载、解压
  13. SNN 脉冲神经网络
  14. 字节跳动移动架构师学习笔记,Android篇
  15. 【前端知识点】promise简书-30分钟带你搞懂promise面试必备
  16. Tableau权限设置方法
  17. 生产环境centos7 安装mysql 5.7.35
  18. C语言捉弄人的程序,愚人节怎么捉弄人?愚人节微信红包整人方法大全
  19. C语言程序设计(理论课)第八章 函数与宏定义
  20. 单商户商城系统功能拆解16—供应商管理

热门文章

  1. Recover Binary Search Tree
  2. Automate repeatedly actions in work
  3. 用随机森林分类器和GBDT进行特征筛选
  4. 【dp】【路径压缩】P1052 过河
  5. 2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践
  6. 软件工程-GoldPoint游戏
  7. C++入门经典-例4.7-变量的作用域
  8. 2.使用windows下的client连接虚拟机上的oracle连不上的时候的解决方式
  9. Win7如何改变用户文件夹位置
  10. 分步骤学习自动化测试