我在Spring 4中有大约250MB的请求体,我需要http PUT。我认为Jackson Streaming API可能是处理这个大型机构的好方法,因为我遇到了OOM问题。我只需要为单个端点启用此功能。有谁知道如何为Spring 4 @RestController
设置它?我已经看到提到WebMvcConfigurerAdapter
和HttpMessageConverters
,但我似乎无法找到如何将Spring MVC与Jackson Streaming API集成的示例。
THX!
-David
答案 0 :(得分:2)
您可以从请求中获取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) {
}
}
}