You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

spring.servlet.multipart.*配置是否适用于Jersey Multipart?

让Jersey直接读取Spring Boot application.properties中的Multipart配置

可以让Jersey复用Spring Boot application.properties 中的spring.servlet.multipart.*配置,无需单独维护jersey-multipart-config.properties文件,具体实现方式如下:

原理说明

Jersey的MultiPartFeature默认会从自身专属配置文件加载参数,但Spring Boot已将multipart相关配置封装到MultipartProperties类中,我们可以手动将这些Spring配置绑定到Jersey的MultipartConfigElement,让Jersey直接复用现有配置。

具体实现

创建一个Spring配置类,注入Spring的MultipartProperties,并在注册MultiPartFeature时传入自定义的MultipartConfigElement:

import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.servlet.MultipartProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.MultipartConfigElement;

@Configuration
public class JerseyMultipartConfiguration {

    @Autowired
    private MultipartProperties multipartProperties;

    @Bean
    public ResourceConfig jerseyResourceConfig() {
        return new ResourceConfig()
                // 注册MultiPartFeature并绑定Spring的multipart配置
                .register(MultiPartFeature.class)
                .property(MultiPartFeature.MULTIPART_CONFIG, buildMultipartConfig());
    }

    private MultipartConfigElement buildMultipartConfig() {
        return new MultipartConfigElement(
                // 临时文件存储路径
                multipartProperties.getLocation(),
                // 单个文件最大大小
                multipartProperties.getMaxFileSize().toBytes(),
                // 整个请求最大大小
                multipartProperties.getMaxRequestSize().toBytes(),
                // 文件大小阈值(超过后写入磁盘)
                (int) multipartProperties.getFileSizeThreshold().toBytes()
        );
    }
}

注意事项

  • 如果项目已通过其他方式(比如自定义ResourceConfig子类)注册了MultiPartFeature,需要确保在对应配置中统一设置MULTIPART_CONFIG属性,避免重复注册导致配置不生效。
  • 配置完成后,Jersey处理文件上传时会使用application.properties中指定的/tmp/tomcat作为临时文件路径,不再生成/tmp/MIME*格式的临时文件。

内容的提问来源于stack exchange,提问作者sbrattla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:45:35