У меня есть метод, для которого я добавил кэш, добавив аннотацию @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, но ни у одного из них нетсобытие, когда кеш возвращает результат (не ноль).
Я действительно не хочу менять реализацию, чтобы использовать кэш программно, а не использовать аннотации (у меня действительно есть много служб, которые нужно изменить, не только один), есть ли хороший способвсе равно регистрировать эти события?