SpringBoot(十七)静态资源处理源码解析及配置

本文详细解析了SpringBoot中静态资源处理的流程,从WebMvcAutoConfiguration类开始,探讨EnableWebMvcConfiguration和WebMvcAutoConfigurationAdapter的作用。接着,通过实践演示如何访问默认静态资源路径,并介绍如何自定义静态资源路径。最后,解决自定义配置导致的自动配置失效问题,提供了解决方案。
摘要由CSDN通过智能技术生成

目录

流程分析

EnableWebMvcConfiguration

WebMvcAutoConfigurationAdapter

实践是检验真理的唯一标准

准备工作 

使用url直接访问静态资源

 自定义静态资源路径


SpringBoot版本:2.1.1 

流程分析

先看下SpringBoot的MVC自动配置类WebMvcAutoConfiguration,位于spring-boot-autoconfigure-2.1.1.RELEASE.jar包下。

类上很多注解,一个一个解释,@Conditiona注解前面有说过,可以参考。

@Configuration:标注是一个配置类

@ConditionalOnWebApplication:应用类型为web应用时匹配

@ConditionalOnClass:当前类路径下存在Servlet.class,DispatcherServlet.class,WebMvcConfigurer.class时匹配

@ConditionalOnMissingBean:不存在WebMvcConfigurationSupport类型的bean时匹配

@AutoConfigureOrder:通过order可以对自动配置类进行排序,该类order为Integer.MIN_VALUE+10

@AutoConfigureAfter:在其他指定的自动配置类之后应用,这里是在DispatcherServletAutoConfiguration,TaskExecutionAutoConfiguration,ValidationAutoConfiguration自动配置之后应用

注意上面标红的一行, 不存在WebMvcConfigurationSupport类型bean时匹配,即如果编写类继承了WebMvcConfigurationSupport,那么SpringBoot就不会应用该自动配置类,会出现什么情况呢?也就是下面要说的。

WebMvcAutoConfiguration关注两个静态的内部类WebMvcAutoConfigurationAdapterEnableWebMvcConfiguration

EnableWebMvcConfiguration

先看下这个内部类,继承了DelegatingWebMvcConfiguration,上面的注释说配置等效于@EnableWebMvc,至于为啥,看下面的截图。暂时就不关注该类中的其他内容了,如RequestMappingHandlerMapping处理url映射....

 

DelegatingWebMvcConfiguration继承了WebMvcConfigurationSupport,该类也是用来配置MVC的类。

看DelegatingWebMvcConfiguration的这个方法,会自动装配WebMvcConfigurer类型的bean添加到configurers的属性delegates中,一个List<WebMvcConfigurer>。该类的所有方法都是委托给了WebMvcConfigurerComposite,在WebMvcConfigurerComposite中是循环List调用对应方法,即将相关配置方法委托给了自动装配的WebMvcConfigurer类型的bean。下面截图列举一个为例。

这里传入的bean有两个,一个就是下面要说的WebMvcAutoConfigurationAdapter,另一个是我自己编写的配置类。

 

WebMvcAutoConfigurati

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值