Спасибо @Джон, я посмотрю на это и попробую реализовать это для моих нужд!
ользую Spring Cache, где я передаю коллекцию ключей, а возвращение представляет собой список сущностей. Я хотел бы, чтобы инфраструктура кэширования понимала, что каждый элемент в списке возврата должен кэшироваться с соответствующим кодом. На данный момент кажется, что ключ - это весь список, и если я пропущу ключ в последующем вызове, он попытается перезагрузить всю коллекцию снова.
@Override
@Cacheable(value = "countries")
public List<Country> getAll(List<String>codes) {
return countryDao.findAllInCodes(codes);
}
другая возможность состоит в том, что возвращаемое значение представляет собой карту, аналогично я хотел бы, чтобы кэш был достаточно интеллектуальным, чтобы запрашивать только те элементы, которые никогда не запрашивались ранее, а также кэшировать их каждый элемент с его ключом.
@Override
@Cacheable(value = "countries")
public Map<String,Country> getAllByCode(List<String>codes) {
return countryDao.findAllInCodes(codes);
}
Предположим, что класс страны выглядит так:
class Country{
String code;
String fullName;
long id;
... // getters setters constructurs etc..
}
Возможно ли это с помощью Spring Cache?