Я пытаюсь настроить кеш с помощью guava, используя следующий код:
private List<Profile> buildCache() {
LoadingCache cache = CacheBuilder.newBuilder()
.expireAfterWrite(10, TimeUnit.MINUTES)
.maximumSize(40)
.build(
new CacheLoader<Profile, List<Profile>>() {
@Override
public List<Profile> load(Profile profile) throws Exception {
Profile profile1 = new Profile();
Profile.setEmployed(true);
return profileDAO.getAllProfiles(Profile1, null);
}
}
);
return (List<Profile>) cache;
}
public List<Profile> getAllProfiles(Profile profile, Integer size) throws Exception {
return profileDAO.getAllProfiles(profile, size);
}
Идея в том, что это создаст кеш с использованием профиля get all.Метод для этого использует новый объект профиля, чтобы установить логическое значение, является ли этот сотрудник занятым или нет.Переменная размера означает, что метод вернет столько, сколько указано.Когда значение равно нулю, по умолчанию используется верхняя часть 10.
У меня есть две проблемы: 1. Я впервые использую кеш, поэтому я действительно не знаю, правильно ли я это делаю.2. Я не могу найти ничего в документации о том, как реализовать это в моем приложении.Как мне это назвать?Я попытался изменить метод getAllProfiles, чтобы он возвращался:
public List<Profile> getAllProfiles(Profile profile, Integer size) throws Exception {
return buildCache();
}
Но это просто возвращает исключение, из-за которого я не могу преобразовать кеш в список java:
Exception occurred: java.lang.ClassCastException: com.google.common.cache.LocalCache$LocalLoadingCache cannot be cast to java.util.List
Если это поможет,мое приложение также использует Spring, поэтому я также проводил исследования в этом направлении.Есть ли какая-то разница между springframework.cache.guava и google.common.cache, или это просто встроенный кеш в Spring?