前言:静态资源映射规则的自动配置都在WebMvcAutoConfiguration这个配置类 里面描述了。我们可以打开进行源码追踪。
通过分析源码,我们发现WebMvcAutoConfiguration这个配置类肯定被ioc容器进行了管理(也就是自动配置生效了)。那么它到底给容器里配置了什么呢?
1. WebMvcAutoConfiguration 与 IOC 容器
通过源码分析可知,WebMvcAutoConfiguration 配置类被 IOC 容器管理,即自动配置生效。接下来重点关注 WebMvcAutoConfigurationAdapter。
我们发现,WebMvcAutoConfigurationAdapter要生效的话,前提是配置 文件的信息要绑定到webMvcProperies和ResourceProperties这两个类 上。我们分别打开WebMvcProperties和ResourceProperties这两个类
2. WebMvcAutoConfigurationAdapter 生效前提
WebMvcAutoConfigurationAdapter 要生效,需要将配置文件的信息绑定到 WebMvcProperties 和 ResourceProperties 这两个类上。下面分别对这两个类进行介绍。
我们终于知道:WebMvcProperties和spring.mvc开头的配置信息绑定; ResourceProperties和spring.resources开头的配置信息绑定。
3. WebMvcProperties 和 ResourceProperties 配置绑定
WebMvcProperties:该类与spring.mvc开头的配置信息绑定。通过将配置文件中spring.mvc相关配置与WebMvcProperties类关联,可获取spring.mvc配置的所有值。ResourceProperties:该类与spring.resources开头的配置信息绑定。同样,借助此绑定,能获取spring.resources配置的所有值。
4. 关键对象说明
ResourceProperties resourceProperties:获取与spring.resources绑定的所有值的对象。WebMvcProperties mvcProperties:获取与spring.mvc绑定的所有值的对象。ListableBeanFactory beanFactory:Spring 的 BeanFactory,用于管理和获取 Bean。HttpMessageConverters:用于找到所有的 HTTP 消息转换器。ResourceHandlerRegistrationCustomizer:资源处理器的自定义器,可对资源处理器进行定制。ServletRegistrationBean:用于给应用注册 Servlet、Filter 等组件。