final CacheKeyGenerator cacheKeyGenerator = cacheKeyInvocationContext.unwrap(CacheKeyInvocationContextImpl.class).getCacheKeyGenerator();
final Cache<GeneratedCacheKey, Object> cache = cacheResolver.resolveCache(cacheKeyInvocationContext);
final CacheRemove cacheRemoveEntry = cacheKeyInvocationContext.getCacheAnnotation();
final GeneratedCacheKey cacheKey = cacheKeyGenerator.generateCacheKey(cacheKeyInvocationContext);
if (!cacheRemoveEntry.afterInvocation()) {
cache.remove(cacheKey);
if (getLog().isTraceEnabled()) {
getLog().tracef("Remove entry with key '%s' in cache '%s' before method invocation", cacheKey, cache.getName());
}
}