如何使用Spring 4 MVC配置Jackson Streaming API

时间:2017-06-13 04:19:46

标签: java spring-mvc jackson spring-4

我在Spring 4中有大约250MB的请求体,我需要http PUT。我认为Jackson Streaming API可能是处理这个大型机构的好方法,因为我遇到了OOM问题。我只需要为单个端点启用此功能。有谁知道如何为Spring 4 @RestController设置它?我已经看到提到WebMvcConfigurerAdapterHttpMessageConverters,但我似乎无法找到如何将Spring MVC与Jackson Streaming API集成的示例。

THX!
-David

1 个答案:

答案 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) {
         }
    }
}