spring boot 对 web 静态资源的管理
经过前两篇文章我们知道spring boot最大的功能就是自动配置。主要是通过以下两个类实现该功能:
- xxxxAutoConfiguration :帮我们给容器中自动配置组件
- xxxxProperties : 配置类来封装配置文件的内容
进行web应用开发的时候,也是需要这两个类来给我们自动配置,这两个类是:WebMvcAutoConfiguration
和 ResourceProperties
,通过它们来管理一些静态资源。
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的形式引入静态资源文件,我们只能去类路径下的资源文件夹中找静态资源了,看 WebMvcAutoConfiguration
的 addResourceHandlers
方法
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 标注
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。