Search in sources :

Example 1 with KeyGenerator

use of org.springframework.cache.interceptor.KeyGenerator in project spring-framework by spring-projects.

the class AbstractKeyCacheInterceptor method generateKey.

/**
 * Generate a key for the specified invocation.
 * @param context the context of the invocation
 * @return the key to use
 */
protected Object generateKey(CacheOperationInvocationContext<O> context) {
    KeyGenerator keyGenerator = context.getOperation().getKeyGenerator();
    Object key = keyGenerator.generate(context.getTarget(), context.getMethod(), context.getArgs());
    if (logger.isTraceEnabled()) {
        logger.trace("Computed cache key " + key + " for operation " + context.getOperation());
    }
    return key;
}
Also used : KeyGenerator(org.springframework.cache.interceptor.KeyGenerator)

Example 2 with KeyGenerator

use of org.springframework.cache.interceptor.KeyGenerator in project spring-framework by spring-projects.

the class AnnotationJCacheOperationSource method createCacheResultOperation.

protected CacheResultOperation createCacheResultOperation(Method method, @Nullable CacheDefaults defaults, CacheResult ann) {
    String cacheName = determineCacheName(method, defaults, ann.cacheName());
    CacheResolverFactory cacheResolverFactory = determineCacheResolverFactory(defaults, ann.cacheResolverFactory());
    KeyGenerator keyGenerator = determineKeyGenerator(defaults, ann.cacheKeyGenerator());
    CacheMethodDetails<CacheResult> methodDetails = createMethodDetails(method, ann, cacheName);
    CacheResolver cacheResolver = getCacheResolver(cacheResolverFactory, methodDetails);
    CacheResolver exceptionCacheResolver = null;
    final String exceptionCacheName = ann.exceptionCacheName();
    if (StringUtils.hasText(exceptionCacheName)) {
        exceptionCacheResolver = getExceptionCacheResolver(cacheResolverFactory, methodDetails);
    }
    return new CacheResultOperation(methodDetails, cacheResolver, keyGenerator, exceptionCacheResolver);
}
Also used : CacheResult(javax.cache.annotation.CacheResult) CacheResolver(org.springframework.cache.interceptor.CacheResolver) KeyGenerator(org.springframework.cache.interceptor.KeyGenerator) CacheKeyGenerator(javax.cache.annotation.CacheKeyGenerator) CacheResolverFactory(javax.cache.annotation.CacheResolverFactory)

Example 3 with KeyGenerator

use of org.springframework.cache.interceptor.KeyGenerator in project spring-framework by spring-projects.

the class EnableCachingTests method testKeyStrategy.

@Test
public void testKeyStrategy() {
    CacheInterceptor ci = this.ctx.getBean(CacheInterceptor.class);
    assertThat(ci.getKeyGenerator()).isSameAs(this.ctx.getBean("keyGenerator", KeyGenerator.class));
}
Also used : CacheInterceptor(org.springframework.cache.interceptor.CacheInterceptor) KeyGenerator(org.springframework.cache.interceptor.KeyGenerator) SomeCustomKeyGenerator(org.springframework.context.testfixture.cache.SomeCustomKeyGenerator) SomeKeyGenerator(org.springframework.context.testfixture.cache.SomeKeyGenerator) Test(org.junit.jupiter.api.Test)

Example 4 with KeyGenerator

use of org.springframework.cache.interceptor.KeyGenerator in project spring-framework by spring-projects.

the class AnnotationJCacheOperationSource method createCachePutOperation.

protected CachePutOperation createCachePutOperation(Method method, @Nullable CacheDefaults defaults, CachePut ann) {
    String cacheName = determineCacheName(method, defaults, ann.cacheName());
    CacheResolverFactory cacheResolverFactory = determineCacheResolverFactory(defaults, ann.cacheResolverFactory());
    KeyGenerator keyGenerator = determineKeyGenerator(defaults, ann.cacheKeyGenerator());
    CacheMethodDetails<CachePut> methodDetails = createMethodDetails(method, ann, cacheName);
    CacheResolver cacheResolver = getCacheResolver(cacheResolverFactory, methodDetails);
    return new CachePutOperation(methodDetails, cacheResolver, keyGenerator);
}
Also used : CacheResolver(org.springframework.cache.interceptor.CacheResolver) KeyGenerator(org.springframework.cache.interceptor.KeyGenerator) CacheKeyGenerator(javax.cache.annotation.CacheKeyGenerator) CachePut(javax.cache.annotation.CachePut) CacheResolverFactory(javax.cache.annotation.CacheResolverFactory)

Example 5 with KeyGenerator

use of org.springframework.cache.interceptor.KeyGenerator in project spring-framework by spring-projects.

the class AnnotationJCacheOperationSource method createCacheRemoveOperation.

protected CacheRemoveOperation createCacheRemoveOperation(Method method, @Nullable CacheDefaults defaults, CacheRemove ann) {
    String cacheName = determineCacheName(method, defaults, ann.cacheName());
    CacheResolverFactory cacheResolverFactory = determineCacheResolverFactory(defaults, ann.cacheResolverFactory());
    KeyGenerator keyGenerator = determineKeyGenerator(defaults, ann.cacheKeyGenerator());
    CacheMethodDetails<CacheRemove> methodDetails = createMethodDetails(method, ann, cacheName);
    CacheResolver cacheResolver = getCacheResolver(cacheResolverFactory, methodDetails);
    return new CacheRemoveOperation(methodDetails, cacheResolver, keyGenerator);
}
Also used : CacheRemove(javax.cache.annotation.CacheRemove) CacheResolver(org.springframework.cache.interceptor.CacheResolver) KeyGenerator(org.springframework.cache.interceptor.KeyGenerator) CacheKeyGenerator(javax.cache.annotation.CacheKeyGenerator) CacheResolverFactory(javax.cache.annotation.CacheResolverFactory)

Aggregations

KeyGenerator (org.springframework.cache.interceptor.KeyGenerator)5 CacheKeyGenerator (javax.cache.annotation.CacheKeyGenerator)3 CacheResolverFactory (javax.cache.annotation.CacheResolverFactory)3 CacheResolver (org.springframework.cache.interceptor.CacheResolver)3 CachePut (javax.cache.annotation.CachePut)1 CacheRemove (javax.cache.annotation.CacheRemove)1 CacheResult (javax.cache.annotation.CacheResult)1 Test (org.junit.jupiter.api.Test)1 CacheInterceptor (org.springframework.cache.interceptor.CacheInterceptor)1 SomeCustomKeyGenerator (org.springframework.context.testfixture.cache.SomeCustomKeyGenerator)1 SomeKeyGenerator (org.springframework.context.testfixture.cache.SomeKeyGenerator)1