У меня есть служба REST, которая возвращает javax.ws.rs.core.Response. Этот ответ фактически содержит StreamingOutput, который заполняется в цикле объектами, которые я передаю, что-то вроде этого:
@Cacheable("params")
public Response RetrieveAreas(String params)
{
(...)
StreamingOutput adminAreaStream = new StreamingOutput()
{
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
@Override
public void write(OutputStream output) throws IOException, WebApplicationException
{
try
{
(the loops and object writing/flushing here)
}
(...)
}
return Response.ok(adminAreaStream).build();
}
Этот SO вопрос касается REST-кэширования Spring, но не касается аспекта StreamingOutput. Мои вопросы:
- Правильно ли размещено кэширование при применении на уровне метода (RetrieveAreas) - или оно должно быть помещено в цикл, где объекты загружаются и записываются в поток?
- Что, кроме @Cacheable, необходимо для подключения минимального рабочего кеша Spring для моего сценария? Я посмотрел этот учебник , но неясно по многим аспектам, таким как присвоение имен кешу, необходимость в менеджере кеша, связь между строковым аргументом ConcurrentCacheManager и именем кеша (делают ли они должны быть одинаковыми или это просто совпадение) и т.д.
Если это вообще возможно, пожалуйста, укажите маркированный список того, что делать (1. Создайте класс диспетчера кэша, 2. пометьте метод с помощью @Cacheable и т. Д.)