我有一个简单的控制器方法,它调用spring数据存储库并返回一些对象。
@RequestMapping(value="/api/learnitemlists", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Iterable<LearnItemList>> getLearnItemLists(@RequestParam(value="fromLanguages") Optional<List<String>> fromLanguages,
@RequestParam(value="toLanguage") Optional<String> toLanguage,
@RequestParam("pagenumber") Integer pageNumber,
@RequestParam("pagesize") Integer pageSize) {
LOGGER.debug("start of learnItemLists call");
Page<LearnItemList> lists;
lists = learnItemListRepositoryCustom.findBasedOnLanguage(fromLanguages,toLanguage,new PageRequest(pageNumber,pageSize));
HttpHeaders headers = new HttpHeaders();
headers.add("X-total-count", Long.toString(lists.getTotalElements()));
headers.add("Access-Control-Expose-Headers", "X-total-count");
ResponseEntity<Iterable<LearnItemList>> result = new ResponseEntity<Iterable<LearnItemList>>(lists,headers,HttpStatus.OK);
LOGGER.debug("end of learnItemLists call");
return result;
}
我记录了方法调用的开头和结尾: 22:06:11.914 - 22:06:12.541 因此,从数据库中实际检索对象的时间不到1秒。但是,在浏览器中尝试时,完整请求大约需要2.68(集成测试显示类似的性能)。
我不禁想到有些事情已经结束。可以序列化为JSON(我使用杰克逊)需要这么久吗?整个JSON响应约为1 kb ......
这是正常的(我对此表示怀疑),如果没有,我应采取哪些步骤来找出原因?