【问题标题】:how to configure the Jackson Streaming API with Spring 4 MVC如何使用 Spring 4 MVC 配置 Jackson Streaming API
【发布时间】:2017-06-13 17:51:37
【问题描述】:
我有大约 250MB 的请求正文,我需要在 Spring 4 中 http PUT。我在想 Jackson Streaming API 可能是处理这个大正文的好方法,因为我遇到了 OOM 问题。我只需要为单个端点启用它。有谁知道如何为 Spring 4 @RestController 进行设置?我见过提到WebMvcConfigurerAdapter 和HttpMessageConverters,但我似乎找不到如何将Spring MVC 与Jackson Streaming API 集成的示例。
谢谢!
-大卫
【问题讨论】:
标签:
java
spring-mvc
jackson
spring-4
【解决方案1】:
您可以从请求中获取InputStream 并使用它来初始化JsonParser。它看起来像这样:
@RestController
public class MyController {
private static final JsonFactory jfactory = new JsonFactory();
@PostMapping(path = "/bigfileshere")
public void enpointForBigFiles(HttpServletRequest request, HttpServletResponse response) {
InputStream stream = request.getInputStream();
try (JsonParser parser = jfactory.createParser(stream)) {
while (parser.nextToken() != JsonToken.END_OBJECT) {
String fieldname = parser.getCurrentName();
// do other stuff
}
} catch (IOException e) {
}
}
}