web开发静态资源映射规则源码解析(1)

127 阅读1分钟

前言:静态资源映射规则的自动配置都在WebMvcAutoConfiguration这个配置类 里面描述了。我们可以打开进行源码追踪。

image.png

通过分析源码,我们发现WebMvcAutoConfiguration这个配置类肯定被ioc容器进行了管理(也就是自动配置生效了)。那么它到底给容器里配置了什么呢?

1. WebMvcAutoConfiguration 与 IOC 容器

通过源码分析可知,WebMvcAutoConfiguration 配置类被 IOC 容器管理,即自动配置生效。接下来重点关注 WebMvcAutoConfigurationAdapterimage.png

我们发现,WebMvcAutoConfigurationAdapter要生效的话,前提是配置 文件的信息要绑定到webMvcProperies和ResourceProperties这两个类 上。我们分别打开WebMvcProperties和ResourceProperties这两个类

2. WebMvcAutoConfigurationAdapter 生效前提

WebMvcAutoConfigurationAdapter 要生效,需要将配置文件的信息绑定到 WebMvcProperties 和 ResourceProperties 这两个类上。下面分别对这两个类进行介绍。

image.png

image.png

我们终于知道:WebMvcProperties和spring.mvc开头的配置信息绑定; ResourceProperties和spring.resources开头的配置信息绑定。

3. WebMvcProperties 和 ResourceProperties 配置绑定

  • WebMvcProperties:该类与 spring.mvc 开头的配置信息绑定。通过将配置文件中 spring.mvc 相关配置与 WebMvcProperties 类关联,可获取 spring.mvc 配置的所有值。
  • ResourceProperties:该类与 spring.resources 开头的配置信息绑定。同样,借助此绑定,能获取 spring.resources 配置的所有值。

image.png

4. 关键对象说明

  • ResourceProperties resourceProperties:获取与 spring.resources 绑定的所有值的对象。
  • WebMvcProperties mvcProperties:获取与 spring.mvc 绑定的所有值的对象。
  • ListableBeanFactory beanFactory:Spring 的 BeanFactory,用于管理和获取 Bean。
  • HttpMessageConverters:用于找到所有的 HTTP 消息转换器。
  • ResourceHandlerRegistrationCustomizer:资源处理器的自定义器,可对资源处理器进行定制。
  • ServletRegistrationBean:用于给应用注册 Servlet、Filter 等组件。