Мой API иногда нужны данные кэша, а иногда не требуется?

Моему сервису иногда нужны данные кеша, а иногда нет необходимости, поэтому я хотел бы написать метод, который мог бы очищать кеш, когда он не нужен, и # кто-то может помочь мне создать спокойную, весеннюю загрузку java 8 #

1 ответ

Решение

Spring предоставляет аннотации, которые могут помочь вам с этой целью. Если вам условно требуется кэширование, вы можете, например, использовать condition параметр @Cacheable аннотация, например:

@Cacheable(cacheNames="stuff", condition="#cached")
public List<Stuff> findAll(boolean cached) {
    // ...
}

В этом случае, если вы позвоните findAll(true), он вернет кэшированный результат, а если вы позвоните findAll(false), он будет действовать так, как если бы аннотации не было.

Создать REST API из него не так уж и сложно, так как ваш cached Параметр также может быть получен из параметра запроса:

@GetMapping("/api/stuff")
@Cacheable(cacheNames="stuff", condition="#cached")
public List<Stuff> findAll(@RequestParam boolean cached) {
    // ...
}

Кроме того, если вы хотите очистить кеш, вы можете использовать @CacheEvict аннотация:

@CacheEvict("stuff")
public void clearCache() {
}

И так же, как и раньше, вы можете включить эту конечную точку:

 @DeleteMapping("/api/stuff/cache")
 @CacheEvict("stuff")
 @ResponseStatus(HttpStatus.NO_CONTENT)
 public void clearCache() {

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