SpringBoot启动默认加载 xxxAutoConfiguration 类(自动配置类)
SpringMVC功能的自动配置类 WebMvcAutoConfiguration,生效
关于静态资源配置,主要看webMvcAutoConfigurationAdapter
@Configuration(proxyBeanMethods = false):表明为配置类,括号里的内容表示不通过代理方式获取,即每次从容器中获取的值不一样配置文件的相关属性和xxx进行了绑定。WebMvcProperties==spring.mvc、ResourceProperties==spring.resources
该类只有一个有参构造器,有参构造器所有参数的值都会从容器中确定
ResourceProperties resourceProperties;获取和spring.resources绑定的所有的值的对象
WebMvcProperties mvcProperties 获取和spring.mvc绑定的所有的值的对象
ListableBeanFactory beanFactory Spring的beanFactory
HttpMessageConverters 找到所有的HttpMessageConverters
ResourceHandlerRegistrationCustomizer 找到 资源处理器的自定义器
DispatcherServletPath
ServletRegistrationBean 给应用注册Servlet、Filter....
该类中有许多对资源处理的方法,我们主要看对静态资源的处理方法
该方法首先拿到resourceProperties即spring.resources这个配置文件下绑定的所有配置的东西,addMappings属性默认为true,如果为false,所有静态资源的配置都失效
spring:
resources:
add-mappings: false 禁用所有静态资源规则
this.resourceProperties.getCache().getPeriod()获取静态资源在缓存中存在的时间,也可以重新配置,默认为0this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl():拿到缓存的控制
然后注册第一种访问规则/webjars/**,/webjars/**的所有请求都找/meta-INF/resources/webjars/路径
setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl)):按照之前设置的缓存时间缓存一段时间this.mvcProperties.getStaticPathPattern():静态资源路径的配置规则,默认为/**,在源代码里可以自行查看
然后注册第二种访问规则,/**,基本方法和第一种一样,/**下的所有请求都在如下位置找
--------------------------------------------------------------------------------------------------------------------------------
再来看看欢迎页的配置规则
方法里的参数都从容器中获取到了,可以不用管,
new WelcomePageHandlerMapping()中有个this.mvcProperties.getStaticPathPattern(),之前我们配置的什么,这里就是什么,
如果欢迎页存在,且/**是静态资源访问路径,如果我们自定义了访问路径,就进不去if语句,在底层是写死的,
否则进入controller下寻找/index



