Spring MVC與Spring Boot文件上傳配置項對比

Spring MVC與Spring Boot文件上傳配置項對比


一、Spring MVC配置項(基于不同MultipartResolver實現)

1. 使用 CommonsMultipartResolver(Apache Commons FileUpload)
@Bean
public MultipartResolver multipartResolver() {CommonsMultipartResolver resolver = new CommonsMultipartResolver();resolver.setMaxUploadSize(10485760); // 10MBresolver.setMaxInMemorySize(4096);   // 4KBresolver.setDefaultEncoding("UTF-8");resolver.setUploadTempDir(new FileSystemResource("/temp/upload"));return resolver;
}
配置項描述默認值作用域
maxUploadSize允許上傳的文件總大小(字節)-1(無限制)全局限制
maxInMemorySize內存中臨時存儲的最大大小(超過則寫入磁盤)10240(10KB)內存與磁盤切換閾值
defaultEncoding請求編碼格式ISO-8859-1解析文件名和參數編碼
uploadTempDir臨時文件存儲路徑系統默認臨時目錄自定義臨時目錄路徑
resolveLazily延遲解析請求(避免大文件阻塞)false控制請求解析時機

2. 使用 StandardServletMultipartResolver(Servlet 3.0+)

無需手動配置MultipartResolver屬性,但需通過Servlet容器配置參數控制:

<!-- 在web.xml中配置Tomcat參數 -->
<Context><Parameter name="maxFileSize" value="10MB" override="false"/><Parameter name="maxRequestSize" value="10MB" override="false"/>
</Context>
配置項描述默認值作用域
maxFileSize單個文件最大大小(Servlet容器參數)無限制單個文件限制
maxRequestSize請求總大小限制(Servlet容器參數)無限制全局請求限制
fileSizeThreshold內存與磁盤切換閾值(Servlet容器參數)0內存與磁盤切換閾值

二、Spring Boot配置項(通過application.propertiesapplication.yml
# application.properties配置示例
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.location=/temp/upload
spring.servlet.multipart.enabled=true
spring.servlet.multipart.default-charset=UTF-8
spring.servlet.multipart.resolve-lazily=true
配置項描述默認值作用域
spring.servlet.multipart.max-file-size單個文件最大大小(格式:10MB1MB單個文件限制
spring.servlet.multipart.max-request-size請求總大小限制(格式:10MB10MB全局請求限制
spring.servlet.multipart.location臨時文件存儲路徑系統默認臨時目錄自定義臨時目錄路徑
spring.servlet.multipart.enabled是否啟用multipart支持true全局開關
spring.servlet.multipart.default-charset請求編碼格式UTF-8解析文件名和參數編碼
spring.servlet.multipart.resolve-lazily延遲解析請求(避免大文件阻塞)false控制請求解析時機

三、配置項對比表格
配置項Spring MVC(CommonsMultipartResolver)Spring MVC(StandardServletMultipartResolver)Spring Boot說明
單文件大小限制maxUploadSize(字節)maxFileSize(Servlet容器參數)max-file-sizeSpring Boot支持單位格式(如10MB),而Spring MVC需轉換單位。
總請求大小限制maxUploadSize(字節)maxRequestSize(Servlet容器參數)max-request-sizeSpring Boot配置更直觀,支持單位格式。
臨時文件路徑uploadTempDir無(依賴容器默認路徑)locationSpring Boot提供顯式配置。
編碼格式defaultEncodingdefault-charsetSpring Boot默認UTF-8,與國際標準一致。
內存與磁盤切換閾值maxInMemorySize(字節)fileSizeThreshold(Servlet容器參數)Spring Boot未直接暴露此配置項,需通過容器參數控制。
延遲解析resolveLazilyresolve-lazilySpring Boot支持此配置,避免大文件阻塞線程。
全局開關無(需手動配置Bean)無(需手動配置Bean)enabledSpring Boot提供顯式開關。

四、關鍵差異總結
  1. 配置方式

    • Spring MVC:需手動配置MultipartResolver Bean(如CommonsMultipartResolver),或通過Servlet容器參數(如Tomcat的web.xml)。
    • Spring Boot:通過application.properties統一配置,無需手動聲明Bean,自動適配容器。
  2. 配置項豐富度

    • Spring Boot:提供更豐富的配置項(如enabledresolve-lazily),且支持單位格式(如10MB)。
    • Spring MVC:依賴具體MultipartResolver實現類,配置項分散(如CommonsMultipartResolver需Java代碼配置,StandardServletMultipartResolver需容器參數)。
  3. 兼容性

    • Spring Boot:默認啟用StandardServletMultipartResolver,要求Servlet 3.0+容器(如Tomcat 7+)。
    • Spring MVC:若使用CommonsMultipartResolver,需額外引入commons-fileupload依賴。
  4. 推薦實踐

    • Spring MVC:優先使用StandardServletMultipartResolver(Servlet 3.0+),簡化配置。
    • Spring Boot:直接通過配置文件控制,無需關心底層實現細節。

五、總結

框架配置復雜度依賴要求推薦配置方式
Spring MVC高(需手動配置)commons-fileupload或Servlet 3.0+使用StandardServletMultipartResolver + 容器參數
Spring Boot低(配置文件)自動包含依賴通過spring.servlet.multipart.*配置

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76060.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76060.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76060.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 學習之 Navigation導航

1. Navigation 介紹 Navigation 組件 是 Android Jetpack 的一部分&#xff0c;用于簡化應用內導航邏輯&#xff0c;支持 Fragment、Activity 和 Compose 之間的跳轉。核心優勢&#xff1a; 單 Activity 架構&#xff1a;減少 Activity 冗余&#xff0c;通過 Fragment 或 Com…

Docker Compose 部署Nginx反向代理 tomcat

Nginx 、Tomcat (默認端口8080)》》compose services:nginx:image: nginx:latestcontainer_name: nginxrestart: alwaysports:- 80:80- 8080:8080volumes:# 文件夾會自動創建&#xff0c;但nginx.conf是文件&#xff0c;需要提前創建&#xff0c;否則 會自動創建nginx.conf文件…

數據庫7(數據定義語句,視圖,索引)

1.數據定義語句 SQL數據定義語言&#xff08;DDL&#xff09;用于定義和管理數據庫結構&#xff0c;包括創建、修改和刪除 數據庫對象。常見的DDL語句包括CREATE、DROP和ALTER。 它的操作的是對象&#xff0c;區分操作數據的語句&#xff1a;INSERT,DELETE,UPDATE 示例&#x…

QML面試筆記--UI設計篇02布局控件

1. QML 中常用的布局控件 1.1. Row1.2. Column1.3. Grid1.4. RowLayout1.5. ColumnLayout1.6. GridLayout1.7. 總結 1. QML 中常用的布局控件 1.1. Row 背景知識&#xff1a;Row 布局用于將子元素水平排列&#xff0c;適合簡單的線性布局&#xff0c;如工具欄按鈕或表單輸入…

Compose組件轉換XML布局1.0

文章目錄 學習JetPack Compose資源前言&#xff1a;預覽界面的實現Compose組件的布局管理一、Row和Colum組件&#xff08;LinearLayout&#xff09;LinearLayout&#xff08;垂直方向 → Column&#xff09;LinearLayout&#xff08;水平方向 → Row&#xff09; 二、相對布局 …

從零構建大語言模型全棧開發指南:第五部分:行業應用與前沿探索-5.2.1模型偏見與安全對齊(Red Teaming實踐)

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 大語言模型全棧開發指南:倫理與未來趨勢 - 第五部分:行業應用與前沿探索5.2.1 模型偏見與安全對齊(Red Teaming實踐)一、模型偏見的來源與影響1. 偏見的定義與分類2. 偏見的實際影響案例二、安全對齊…

java基礎 迭代Iterable接口以及迭代器Iterator

Itera迭代 Iterable < T>迭代接口(1) Iterator iterator()(2) forEach(Consumer<? super T> action)forEach結合Consumer常見場景forEach使用注意細節 (3)Spliterator spliterator() Iterator< T>迭代器接口如何“接收” Iterator<T>核心方法迭代器的…

PyTorch構建自定義模型

PyTorch 提供了靈活的方式來構建自定義神經網絡模型。下面我將詳細介紹從基礎到高級的自定義模型構建方法&#xff0c;包含實際代碼示例和最佳實踐。 一、基礎模型構建 1. 繼承 nn.Module 基類 所有自定義模型都應該繼承 torch.nn.Module 類&#xff0c;并實現兩個基本方法&…

AI智算-K8s如何利用GPFS分布式并行文件存儲加速訓練or推理

文章目錄 GPFS簡介核心特性存儲環境介紹存儲軟件版本客戶端存儲RoCEGPFS 管理(GUI)1. 創建 CSI 用戶2. 檢查GUI與k8s通信文件系統配置1. 開啟配額2. 啟用filesetdf文件系統3. 驗證文件系統配置4. 啟用自動inode擴展存儲集群配置1. 啟用對根文件集(root fileset)配額2. igno…

gbase8s之邏輯導出導入腳本(完美版本)

該腳本dbexport.sh用于快速導出庫和導入庫&#xff08;使用多并發unload&#xff0c;和多并發dbload的方式&#xff09; #!/bin/sh #腳本功能&#xff1a;將數據導出成文本&#xff0c;遷移至其他實例 #最后更新時間&#xff1a;2023-12-19 #使用方法&#xff1a; #1.執行該腳…

springMVC-攔截器詳解

攔截器 概述 SpringMVC的處理器攔截器類似于Servlet開發中的過濾器Filter,用于對處理器進行預處理和后處理。開發者可以自己定義一些攔截器來實現特定的功能。 過濾器與攔截器的區別&#xff1a;攔截器是AOP思想的具體應用。 過濾器 servlet規范中的一部分&#xff0c;任何ja…

網絡安全應急響應-系統排查

在網絡安全應急響應中&#xff0c;系統排查是快速識別潛在威脅的關鍵步驟。以下是針對Windows和Linux系統的系統基本信息排查指南&#xff0c;涵蓋常用命令及注意事項&#xff1a; 一、Windows系統排查 1. 系統信息工具&#xff08;msinfo32.exe&#xff09; 命令執行&#x…

基于YOLO的半自動化標注方法:提升鐵路視頻缺陷檢測效率

論文地址:https://arxiv.org/pdf/2504.01010 1. 論文結構概述 本文提出了一種半自動化標注方法,旨在解決鐵路缺陷檢測中大規模圖像/視頻數據集標注成本高、耗時長的問題。論文結構清晰,分為以下核心部分: ?引言(Introduction)? 強調傳統手動標注的痛點(耗時、易錯、…

Linux驅動開發:SPI驅動開發原理

前言 本文章是根據韋東山老師的教學視頻整理的學習筆記https://video.100ask.net/page/1712503 SPI 通信協議采用同步全雙工傳輸機制&#xff0c;拓撲架構支持一主多從連接模式&#xff0c;這種模式在實際應用場景中頗為高效。其有效傳輸距離大致為 10m &#xff0c;傳輸速率…

Android Hilt 教程

Android Hilt 教程 —— 一看就懂&#xff0c;一學就會 1. 什么是 Hilt&#xff1f;為什么要用 Hilt&#xff1f; Hilt 是 Android 官方推薦的 依賴注入&#xff08;DI&#xff09;框架&#xff0c;基于 Dagger 開發&#xff0c;能夠大大簡化依賴注入的使用。 為什么要用 Hi…

【算法手記11】NC41 最長無重復子數組 NC379 重排字符串

&#x1f984;個人主頁:修修修也 &#x1f38f;所屬專欄:刷題 ??操作環境:牛客網 目錄 一.NC41 最長無重復子數組 題目詳情: 題目思路: 解題代碼: 二.NC379 重排字符串 題目詳情: 題目思路: 解題代碼: 結語 一.NC41 最長無重復子數組 牛客網題目鏈接(點擊即可跳轉):NC41 最長…

C語言:字符串處理函數strstr分析

在 C 語言中&#xff0c;strstr 函數用于查找一個字符串中是否存在另一個字符串。它的主要功能是搜索指定的子字符串&#xff0c;并返回該子字符串在目標字符串中第一次出現的位置的指針。如果沒有找到子字符串&#xff0c;則返回 NULL。 詳細說明&#xff1a; 頭文件&#xf…

在windows下安裝spark

在windows下安裝spark完成 安裝過程&#xff1a;

MongoDB常見面試題總結(上)

MongoDB 基礎 MongoDB 是什么&#xff1f; MongoDB 是一個基于 分布式文件存儲 的開源 NoSQL 數據庫系統&#xff0c;由 C 編寫的。MongoDB 提供了 面向文檔 的存儲方式&#xff0c;操作起來比較簡單和容易&#xff0c;支持“無模式”的數據建模&#xff0c;可以存儲比較復雜…

【Java設計模式】第2章 UML急速入門

2-1 本章導航 UML類圖與時序圖入門 UML定義 統一建模語言(Unified Modeling Language):第三代非專利建模語言。特點:開放方法,支持可視化構建面向對象系統,涵蓋模型、流程、代碼等。UML分類(2.2版本) 結構式圖形:系統靜態建模(類圖、對象圖、包圖)。行為式圖形:事…