Применение метода отдыха @Scheduled to@Cacheable

Я пытаюсь добавить расписание в метод получения остатка. Планировщик отлично работает, когда я использую его без аннотации @Cacheable. Вот так -

@Scheduled(fixedDelay = 1000*5)
@GetMapping("test")
public void test(){
    System.out.println("scheduled task through spring");
}

Проблема в том, что когда я добавляю аннотацию @Cacheable, запрос загружается один раз, а затем планировщик не повторяется.

@Scheduled(fixedDelay = 1000*5)
@Cacheable("testData")
@GetMapping("test")
public void test(){
   System.out.println("scheduled task through spring");
}

Я погуглил, но я могу найти информацию о @CacheEvict только с @Scheduled

Какова ваша цель в этом? Было бы разумнее поместить @Cacheable в метод, который будет вызывать ваш контроллер (метод класса обслуживания).

Taavi Kivimaa 15.03.2019 23:41

Реальный метод вызывается из базы данных, я хочу хранить информацию в кеше и обновлять кеш каждые x раз.

user10221193 17.03.2019 20:59

Этот метод не будет обновлять кеш. Сам Cacheable не обновляет никаких данных. Метод с аннотацией Cacheable каждый раз будет пытаться брать элементы из кеша. Если вы хотите обновить кеш, вам следует использовать планирование с фиксированной задержкой для метода CacheEvict или CachePut ИЛИ настроить управление кешем, чтобы записи удерживались в течение максимального количества времени X.

Taavi Kivimaa 18.03.2019 21:09

Ок, отлично! Я попробую. Большое спасибо

user10221193 19.03.2019 05:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
535
1

Ответы 1

Я не считаю, что ставить @Cacheable метод void имеет смысл. Даже если метод возвращал значение...

Я считаю, что @Scheduled срабатывает, но @Cacheable вызывает возврат кэшированного значения вместо повторного выполнения метода. Я думаю, это имеет смысл.

Включите ведение журнала DEBUG для проверки.

Удачи!

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

user10221193 15.03.2019 22:49

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