SpringBoot--->>>web-->>文件上传和下载原理

自动配置类

在SpringBoot中,文件上传是有自动配置类的,就先看自动配置类

//声明自己是一个配置类,并设置proxyBeanMethods代理组件方法为单例模式
@Configuration(proxyBeanMethods = false)
//在有里面这些类的前提下加载这个组件
@ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class, MultipartConfigElement.class })
//有没有前缀是spring.servlet.multipart,值为enabled的配置项,matchIfMissing的值为true,就是说默认有这个
@ConditionalOnProperty(prefix = "spring.servlet.multipart", name = "enabled", matchIfMissing = true)
//当前项目要是一个Servlet项目,说明Multipart就支持Servlet类型的文件上传,其他类型的文件上传就要自己定制化编写文件上传配置
@ConditionalOnWebApplication(type = Type.SERVLET)
//配置绑定,并且注册为容器中的一个组件,跟里面那个类配置绑定的要求一样
@EnableConfigurationProperties(MultipartProperties.class)
public class MultipartAutoConfiguration {
//MultipartProperties默认的配置信息,在这里面有很多默认配置,后面需要修改就能通过他配置绑定的指定前缀修改配置
   private final MultipartProperties multipartProperties;
//有参构造,你也能自定义一个配置信息类,通过有参构造代替它默认的
   public MultipartAutoConfiguration(MultipartProperties multipartProperties) {
      this.multipartProperties = multipartProperties;
   }
​
    /*
    添加一个组件,当容器中没有MultipartConfigElement.class, CommonsMultipartResolver.class
    这两个类型的组件时,组件名字叫multipartConfigElement
    */
   @Bean
   @ConditionalOnMissingBean({ MultipartConfigElement.class, CommonsMultipartResolver.class })
   public MultipartConfigElement multipartConfigElement() {
      return this.multipartProperties.createMultipartConfig();
   }
​
    /*
    添加一个组件,如果容器中没有MultipartResolver类型的组件,就是说用户如果没自己设置MultipartResolver,就由容器替你自动添加,名字是multipartResolver,是StandardServletMultipartResolver类型的
    */
   @Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)
   @ConditionalOnMissingBean(MultipartResolver.class)
   public StandardServletMultipartResolver multipartResolver() {
      StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
      multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());
      return multipartResolver;
   }
​
}

DispathcerServlet中

经过这么久的学习,已经知道请求处理是在DispatcherServlet类的doDispatch方法中执行的,所以直接在doDispatch方法中打断点发请求,观察如何处理请求携带的参数。

来到doDispatch方法中&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值