具有项目/实体集合的弹簧缓存
我正在使用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可以做到这一点吗?