Допустим, у меня есть следующий код:
Entity getEntity(GUID entityId) {
Entity entity = entityLRUCache.get(entityId);
if (entity == null) {
entity = longLoadFromDatabase(entityId);
entityLRUCache.put(entityId, entity);
}
return entity;
}
Благодаря @ BenManes Я могу использовать платформу Caffeine для решения проблемы с кэшем:
Entity getEntity(GUID entityId) {
return entityCache.get(entityId, this::longLoadFromDatabase);
}
Но теперь метод longLoadFromDatabase
возвращает Single<Entity>
вместо самой сущности (этот второй аргумент для get
является преобразователем из int -> Entity
), поэтому предыдущие решения больше не будут работать.