У меня есть такой контроллер:
@RestController
@RequestMapping("/stats")
public class StatisticsController {
@Autowired
private LeadFeignClient lfc;
private List<Lead> list;
@GetMapping("/leads")
private int getCount(@RequestParam(value = "count", defaultValue = "1") int countType) {
list = lfc.getLeads(AccessToken.getToken());
if (countType == 1) {
return MainEngine.getCount(list);
} else if (countType == 2) {
return MainEngine.getCountRejected(list);
} else if (countType == 3) {
return MainEngine.getCountPortfolio(list);
} else if (countType == 4) {
return MainEngine.getCountInProgress(list);
} else if (countType == 5) {
return MainEngine.getCountForgotten(list);
} else if (countType == 6) {
return MainEngine.getCountAddedInThisMonth(list);
} else if (countType == 7) {
return MainEngine.getCountAddedInThisYear(list);
} else {
throw new RuntimeException("Wrong mapping param");
}
}
@GetMapping("/trends")
private boolean getTrend() {
return MainEngine.tendencyRising(list);
}
По сути, это микросервис, который будет обрабатывать статистику на основе списка «бизнес-интересов». FeignClient - ПОЛУЧЕНИЕ списка усеченных до требуемых информационных отведений. Все работает правильно.
Меня беспокоит только производительность - вся эта статистика (countTypes) будет представлена на целевой странице веб-приложения. Если я буду звонить им один за другим, будет ли каждый звонок снова и снова получать список потенциальных клиентов? Или список будет как-то храниться во временной памяти? Я могу представить, что если список станет длиннее, его загрузка может занять некоторое время.
Я пытался вызвать их вне этого метода, @PostConstruct, чтобы заполнить список в начале обслуживания, но у этого решения есть две основные проблемы: аутентификация не может быть обработана маркером oauth, извлеченный список будет нечувствителен к добавлению / удалению отведений, потому что он загружается только в начале.