Я работаю над проектом Spring Boot, который объединяет Redis, Hibernate, Spring Data JPA и MySQL. Я хочу кэшировать результат метода с помощью аннотации @Cacheable. Однако этот метод внутренне вызывает другой метод, который также помечен аннотацией @Cacheable.
Вот краткое описание проблемы:
У меня есть метод method1, помеченный @Cacheable("method1Cache").
Внутри method1 я вызываю другой метод, method2, который также помечен @Cacheable("method2Cache").
Ожидаемое поведение заключается в том, что оба метода должны кэшировать свои результаты независимо.
Однако похоже, что method2 не кэшируется при вызове из method1.
Проблема: Когда метод 1 вызывает метод 2, кэширование метода 2 не работает должным образом. Если я вызываю метод 2 напрямую, он кэшируется правильно, но когда он вызывается из метода 1, он, похоже, не кэширует вызов репозитория для findAll().
Запрос SELECT в Hibernate все еще выполняется, что указывает на то, что кеш не используется.
Вопрос: Как я могу гарантировать, что оба метода кэшируются независимо, даже когда метод2 вызывается внутри метод1? Существует ли конкретная проблема с кэшированием, когда один метод вызывает другой кэшированный метод, взаимодействующий с репозиторием?
Пример кода:
@Service
public class MyService {
@Cacheable("method1Cache")
public String method1(Long id) {
// Call method2 and perform logic
List myEntity = method2(id);
// Perform some logic with myEntity
return "Relevant result"; // Return something relevant here
}
@Cacheable("method2Cache")
public List method2(Long id) {
// Call repository method to fetch data
return myRepository.findActiveFoodsWithProjection();
}
}
Код репозитория:
@Repository
public interface FoodRepository extends JpaRepository {
@Query("SELECT f.id AS id, f.name AS name FROM Food f WHERE f.isActive = true")
List findActiveFoodsWithProjection();
}
Код FoodProjection:
public interface FoodProjection {
Long getId();
String getName();
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... s-expected
Кэширование Spring Boot Redis: вложенные методы @Cacheable не работают должным образом ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Spring Boot @Cacheable перестал работать после того, как я переместил метод в тот же класс
Anonymous » » в форуме JAVA - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Spring Boot @Cacheable перестал работать после того, как я переместил метод в тот же класс
Anonymous » » в форуме JAVA - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-