boot spring 解析csv_springboot源码架构解析MultipartAutoConfiguration

说在前面

前期回顾

sharding-jdbc源码解析 更新完毕

spring源码解析 更新完毕

spring-mvc源码解析 更新完毕

spring-tx源码解析 更新完毕

spring-boot源码解析 更新完毕

rocketmq源码解析 更新完毕

dubbbo源码解析 更新完毕

netty源码解析 更新完毕

spring源码架构更新完毕

spring-mvc源码架构更新完毕

springboot源码架构更新中

github https://github.com/tianheframe

sharding-jdbc源码解析 更新完毕

rocketmq源码解析 更新完毕

seata 源码解析 更新完毕

dubbo 源码解析 更新完毕

netty 源码解析 更新完毕

源码解析

org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration多部分上传的自动配置。如果没有提供标准servletmultipartresolver,则添加一个;如果没有定义,则添加一个multipartConfigElement。EmbeddedWebApplicationContext将MultipartConfigElement bean与任何Servlet bean关联起来。

 MultipartConfigElement是一个Servlet API,用于配置容器如何处理文件上传。默认情况下

@Configuration@ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class,    MultipartConfigElement.class })@ConditionalOnProperty(prefix = "spring.http.multipart", name = "enabled", matchIfMissing = true)@EnableConfigurationProperties(MultipartProperties.class)public class MultipartAutoConfiguration {

监测 Servlet.class, StandardServletMultipartResolver.class,MultipartConfigElement.class,监测spring.http.multipart.enabled属性,加载MultipartProperties配置

org.springframework.boot.autoconfigure.web.MultipartProperties

用于配置MultipartConfigElement的属性。location指定上载文件存储的目录。未指定时,将使用临时目录。max-file-size指定上传文件允许的最大大小。默认为1MB。

 max-request-size指定多部分/表单数据请求允许的最大大小。默认为10MB。文件大小阈值指定文件写入磁盘后的大小阈值。默认值是0。这些属性最终会传递给MultipartConfigFactory,这意味着您可以使用长值指定数值,或者使用接受KB或MB后缀的更具可读性的字符串变体。

@ConfigurationProperties(prefix = "spring.http.multipart", ignoreUnknownFields = false)public class MultipartProperties {

属性名以spring.http.multipart开头

private boolean enabled = true;

上传配置加载

private String location;

上传文件路径

private String maxFileSize = "1MB";

最大文件大小

private String maxRequestSize = "10MB";

最大请求文件大小

private String fileSizeThreshold = "0";

阈值,之后文件将被写入磁盘。值可以使用后缀“MB”或“KB”分别表示兆字节或千字节。

private boolean resolveLazily = false;

是否在文件访问或参数访问时延迟解析多部分请求。

private final MultipartProperties multipartProperties;

multipartProperties

@Bean  @ConditionalOnMissingBean({ MultipartConfigElement.class,      CommonsMultipartResolver.class })  public MultipartConfigElement multipartConfigElement() {    return this.multipartProperties.createMultipartConfig();  }

没检测到 MultipartConfigElement.class,CommonsMultipartResolver.class初始化MultipartConfigElement

@Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)  @ConditionalOnMissingBean(MultipartResolver.class)  public StandardServletMultipartResolver multipartResolver() {    StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();    multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());    return multipartResolver;  }

没检测到MultipartResolver初始化StandardServletMultipartResolver

说在最后

本次解析仅代表个人观点,仅供参考。

7310d5789594e0e4165d7a98d47a7aab.gif

扫码进入技术微信群

4c0c6b3e398f4839756a24a071573ba2.png f78087cdc3f0e40f0e11c945ae84b5e4.png d3baf7a59936ae929cff2645ca841564.png钉钉技术群

d1f9e8759c8c38d9a18dc0ea9782cccd.png

qq技术群

478ddbfbe629d192cec5cccf4f27a04c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值