如何将大型json数据发送到spring控制器

时间:2019-07-12 17:39:31

标签: java spring rest spring-boot

如何将大量json数据发送到spring控制器。说,我有大约100k或1000k记录的大型json数据,需要在spring或springboot中将其发送到我的rest控制器,那么什么是解决问题的最佳/最有效方法?

我知道可以使用请求主体发送数据,但是我认为在REST api的请求主体中发送如此大量的数据效率不高。我可能在这里错了,如果我愿意,请纠正我。

并且数据需要尽快存储在数据库中。因此,我需要一种快速可靠的方法来解决这个问题。

2 个答案:

答案 0 :(得分:0)

您的问题有两个部分。
1.如何接收如此庞大的数据量:如果要接收大量的数据,通常最好将其(从响应的输入流中)本地保存为文件并异步处理该数据。确保设置了适当的较高的读取超时,否则数据流可能会中断)。
2.如何处理如此大的文件:对于大文件,内存占用量需要最小。对于XML,SaxParsers是黄金标准。我发现此库与sax解析非常相似,但对于Json http://rapidjson.org/md_doc_sax.html

答案 1 :(得分:0)

您可以使用反应性方法并流式传输数据。 在Spring中,使用MediaType.APPLICATION_STREAM_JSON_VALUE生产者和Flux作为返回类型。 在客户端,订阅流并处理数据,或者可以使用Spring Batch将数据保存到数据库。