Spring 6 的主要变化
-
Jakarta EE 9+ 支持:
- Spring 6完全迁移到了Jakarta EE 9+,这意味着所有的包名都从
javax
前缀改为了jakarta
前缀。例如,javax.servlet
变为jakarta.servlet
。 - 因此,如果你在Spring 6中使用文件上传,必须确保依赖库和配置都使用了新的Jakarta命名空间。
- Spring 6完全迁移到了Jakarta EE 9+,这意味着所有的包名都从
-
Java 17+ 支持:
- Spring 6要求至少Java 17作为运行环境。这带来了对Java语言特性的更好支持和优化。
教程如下:
这里给大家粘贴一段spring文档的原文:
MultipartResolver
from the package is a strategy for parsing multipart requests including file uploads. There is a container-based implementation for Servlet multipart request parsing. Note that the outdated based on Apache Commons FileUpload is not available anymore, as of Spring Framework 6.0 with its new Servlet 5.0+ baseline.org.springframework.web.multipart
StandardServletMultipartResolver
CommonsMultipartResolver
Multipart Resolver :: Spring 框架
简单来说就是Spring 6.0已经不再使用基于Apache Commons FileUpload的CommonsMultipartResolver
,而是推荐使用基于Servlet标准的StandardServletMultipartResolver
。
MultipartResolver 概述
MultipartResolver
是一个接口,定义了解析multipart请求(包括文件上传)的策略。Spring提供了多种实现,包括基于Servlet容器的实现和过去常用的基于Apache Commons FileUpload的实现。
主要实现
- StandardServletMultipartResolver
- CommonsMultipartResolver (过时的实现,不再推荐)
1. StandardServletMultipartResolver
这是基于Servlet 3.0+规范的实现,利用Servlet容器本身的multipart解析功能。它不依赖于外部库,而是直接使用Servlet API提供的multipart支持。
配置示例: 在Spring 6中,你应该使用StandardServletMultipartResolver
,这也是推荐的方式。
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>
在web.xml
中配置<multipart-config>
这种方式适用于使用XML配置的传统Spring MVC项目。
1. 在web.xml
中添加<multipart-config>
编辑你的web.xml
文件,找到你定义的DispatcherServlet
,然后添加<multipart-config>
元素。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/dispatcher-config.xml</param-value></init-param><load-on-startup>1</load-on-startup><multipart-config><!-- Max file size: 5MB --><max-file-size>5242880</max-file-size><!-- Max request size: 5MB --><max-request-size>5242880</max-request-size><!-- File size threshold after which files will be written to disk: 0 --><file-size-threshold>0</file-size-threshold></multipart-config></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
2. CommonsMultipartResolver
这是基于Apache Commons FileUpload库的实现,曾经是处理文件上传的主要方式。但是在Spring 6.0中,这个实现已经被废弃,因为它依赖的Apache Commons FileUpload库已经过时,不再推荐使用。
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="5242880"/> <!-- 5MB -->
</bean>
在Spring 6中,使用基于Servlet标准的MultipartResolver确保了更好的兼容性和性能,同时减少了对外部库的依赖。