У меня есть метод, в котором я добавил кеш, добавив аннотацию @CacheResult (я фактически создал прокси, потому что не могу изменить исходную реализацию SomethingService
):
@Service
public class SomethingServiceProxyImpl implements SomethingService {
@Autowired
@Qualifier("somethingService")
SomethingService somethingService;
@Override
@CacheResult(cacheName = "somethingCache", exceptionCacheName = "somethingExceptionCache", cachedExceptions = { SomeException.class })
public SomePojo someMethod(String someArg) {
return somethingService.someMethod(someArg);
}
}
Что мне нужно сейчас, так это иметь возможность регистрировать попадания в кеш, то есть случаи, когда возвращаемый результат был результатом из кеша. Я просмотрел Spring Cache, JCache и EHCache (используемую мной реализацию), и я нашел только способ прослушивания (со слушателями) следующих событий: CREATED, UPDATED, REMOVED, EVICTED, EXPIRED, но ни один из них не событие, когда кеш вернул результат (не нуль).
Я действительно не хочу менять реализацию, чтобы программно использовать кеш вместо использования аннотаций (на самом деле мне нужно изменить много сервисов, а не только один), есть ли в любом случае хороший способ регистрировать эти события?
cache.get
. - person Vassilis Bekiaris   schedule 28.02.2019