В нашем сервисе REST мы используем redis с пружинным кешем. Нам нужно обработать некоторые запросы с заголовком: Cache-control = no-cache. Эти запросы не должны получать данные из кэша.
Мы используем условие для @ cacheStatusServiceImpl.isNoCacheMode (), чтобы решить, следует ли использовать кеш или нет.
Пример:
@Caching(put = {@CachePut(value = CacheNameConstants.MY_CACHE,
key = "#id", condition = "@cacheStatusServiceImpl.isNoCacheMode()")},
cacheable = {@Cacheable(value = CacheNameConstants.MY_CACHE,
key = "#id", condition = "!@cacheStatusServiceImpl.isNoCacheMode()")})
Теперь нам нужно добавить sync = true, но синхронизацию нельзя использовать в сочетании с @CachePut, поэтому нельзя использовать предыдущий код.
Я попытался использовать пользовательский cacheResolver, я вижу параметры методов, имею cacheName, но не могу получить доступ к значению ключа. CacheAspectSupprt имеет закрытый метод для генерации ключа, к которому я не могу получить доступ.
Есть идеи, как справиться с отсутствием кэша?