Spring 并返回大量 Json 数据
Spring and returning large volume of Json data
我的项目基于 Java 8 并始终使用 Spring
我有一个服务 return 是一个包含 bean 列表的 bean。
这是代码
API方法
@RequestMapping(value = "/search",", produces = { MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.POST)
@ResponseBody
public DeferredResult<EmpAdvancedSearchPageBean> getSearch(
@RequestBody final EmpBean empBean) {
LOGGER.info("Pre getSearch");
EmpSearchPageBean searchPageBean = dataService.getSearch(empBean);
LOGGER.info("Post getSearch");
LOGGER.info("Pre set deffered result");
DeferredResult<EmpSearchPageBean> deferredResult = new DeferredResult<>();
deferredResult.setResult(searchPageBean);
LOGGER.info("Post set deffered result");
return deferredResult;
}
EmpSearchPageBean
public class EmpSearchPageBean implements java.io.Serializable {
private static final long serialVersionUID = 8085664391632415982L;
@JsonProperty("draw")
private Integer draw;
@JsonProperty("recordsTotal")
private Integer recordsTotal;
@JsonProperty("recordsFiltered")
private Integer recordsFiltered;
@JsonProperty("data")
private List<EmpSearch> data;
}
EmpSearch
public class EmpSearch implements java.io.Serializable {
private static final long serialVersionUID = -7665557350420327753L;
@JsonProperty("divisionDesc")
private String divisionDesc;
@JsonProperty("corpId")
private String corpId;
@JsonProperty("businessUnitDesc")
private String businessUnitDesc;
@JsonProperty("fdirName")
private String fdirName;
}
如果数据列表 (List data;) 包含 500 条记录 - 此服务 returns 大约需要 2 秒
但是,如果它包含大约 2000 条记录(这是一个常见的用例),则最多可能需要 2 分钟才能 return
根据我的日志语句 - return 从数据库中获取此数据大约需要 2 秒,其余时间用于生成 json.
我正在使用 Spring Web 版本 4.3.3.RELEASE。
从调试日志中我可以看到它正在使用 class org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
任何人都可以就我需要做什么才能成功呈现大量 json 数据提供任何建议吗?
决定重构代码以减少 return 的 json 数据。
根据问题反馈尝试了多种建议,但没有得到应有的收获
我的项目基于 Java 8 并始终使用 Spring 我有一个服务 return 是一个包含 bean 列表的 bean。
这是代码 API方法
@RequestMapping(value = "/search",", produces = { MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.POST)
@ResponseBody
public DeferredResult<EmpAdvancedSearchPageBean> getSearch(
@RequestBody final EmpBean empBean) {
LOGGER.info("Pre getSearch");
EmpSearchPageBean searchPageBean = dataService.getSearch(empBean);
LOGGER.info("Post getSearch");
LOGGER.info("Pre set deffered result");
DeferredResult<EmpSearchPageBean> deferredResult = new DeferredResult<>();
deferredResult.setResult(searchPageBean);
LOGGER.info("Post set deffered result");
return deferredResult;
}
EmpSearchPageBean
public class EmpSearchPageBean implements java.io.Serializable {
private static final long serialVersionUID = 8085664391632415982L;
@JsonProperty("draw")
private Integer draw;
@JsonProperty("recordsTotal")
private Integer recordsTotal;
@JsonProperty("recordsFiltered")
private Integer recordsFiltered;
@JsonProperty("data")
private List<EmpSearch> data;
}
EmpSearch
public class EmpSearch implements java.io.Serializable {
private static final long serialVersionUID = -7665557350420327753L;
@JsonProperty("divisionDesc")
private String divisionDesc;
@JsonProperty("corpId")
private String corpId;
@JsonProperty("businessUnitDesc")
private String businessUnitDesc;
@JsonProperty("fdirName")
private String fdirName;
}
如果数据列表 (List data;) 包含 500 条记录 - 此服务 returns 大约需要 2 秒 但是,如果它包含大约 2000 条记录(这是一个常见的用例),则最多可能需要 2 分钟才能 return
根据我的日志语句 - return 从数据库中获取此数据大约需要 2 秒,其余时间用于生成 json.
我正在使用 Spring Web 版本 4.3.3.RELEASE。 从调试日志中我可以看到它正在使用 class org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
任何人都可以就我需要做什么才能成功呈现大量 json 数据提供任何建议吗?
决定重构代码以减少 return 的 json 数据。 根据问题反馈尝试了多种建议,但没有得到应有的收获