Spring - аннотация @Cacheable не работает с методом java

При добавлении аннотации @Cacheable к методу, выполняющему простой код Java, при выполнении приложения срабатывает точка останова внутри метода. Означает ли это, что результат не был закэширован?

Используемая конфигурация:

spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=[port]
spring.cache.redis.time-to-live=[some value]

Обратите внимание, что @Cacheable отлично работает в том же проекте, если он помещен перед методом базы данных.

Вы ожидаете ответа без добавления кода/конфигурации? Пожалуйста, прочтите stackoverflow.com/help/как спросить, особенно часть МВЦЭ, и улучшите свой вопрос.

M. Deinum 29.07.2019 12:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
547
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Да, это означает, что результат не был закэширован.

In this case, if any of the caches contains the required result, the result is returned and the method is not invoked.

Источник

Чтобы использовать кеш, метод должен быть вызван снова с теми же параметрами. Однако, как указывает этот ответ, существуют ограничения.

Я смог заставить его работать, переместив весь код, связанный с кэшированным методом и его подметодами, в новый класс обслуживания, однако моя новая проблема заключается в том, что кеш всегда вызывается и никогда не обновляется. Как мне это исправить? другими словами, код методов никогда не вызывается. Конфигурация времени жизни кэша: spring.cache.redis.time-to-live=60000.

user666 30.07.2019 09:31

Не уверен, что произошло, но я решил проблему, выполнив эту команду в Redis для очистки кеша: redis-cli FLUSHALL

user666 30.07.2019 09:38
Ответ принят как подходящий

Чтобы заставить его работать, нам нужно вызвать метод с аннотацией @Cacheable из другого класса Java. В противном случае это не работает.

Другие вопросы по теме