栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot静态资源配置原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot静态资源配置原理

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()获取静态资源在缓存中存在的时间,也可以重新配置,默认为0
this.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 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号