我正在开发一个spring服务,它从db获取数据并返回一个包含对象列表的json。此服务返回特定表中的所有记录。总共大约有10000条记录。
获取数据的方法是快速的(使用线程),但是当服务返回请求的结果时,它是缓慢的。
而且,当json的大小超过700条记录时,我们会得到一个空结果。列表中的每个对象都有大约70个字段。
有没有人知道什么方法可以让spring不用花那么长时间就能返回结果?
spring服务有响应大小限制吗?
给你密码
public String getData(final Pageable pageable) throws Exception {
final int numberOfThreads = 10;
final StringBuilder str = new StringBuilder();
str.append("{" + "\"content\": [");
// Here we are obtaining all the data in diferents treads and appending in variable String
strContent
String strContent = getDataByThreads(numberOfThreads);
// Here strContent contains 10.000 or more objects in JSON format
logger.info(" -------------- END OF {} THREADS ----------------- ", numberOfThreads);
final long totalPages = (totalCount / fetchSize) + 1;
final boolean last = Math.ceil(totalPages) == pageable.getPageNumber();
final boolean first = pageable.getPageNumber() == 0;
// Mounting the response JSON
str.append(strContent);
str.append("],");
str.append("\"last\": " + last + ",");
str.append("\"totalElements\": " + totalCount + ",");
str.append("\"totalPages\": " + totalPages + ",");
str.append("\"first\": " + first + ",");
str.append("\"numberOfElements\": " + fetchSize + ",");
str.append("\"size\": " + fetchSize + ",");
str.append("\"number\": " + pageable.getPageNumber());
str.append("}");
// Here is where Spring takes a long time...
return str.toString();
}
如您所见,我们以字符串格式返回json,因为对象具有动态字段,并且不是固定的。
谢谢您。
暂无答案!
目前还没有任何答案,快来回答吧!